Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/37: Рейтинг темы: голосов - 37, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 12

Перевод из шестнадцатеричной в двоичную систему

13.12.2010, 01:13. Показов 7385. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожвлуйста!!!
Очень нужно!!!

Перевести целое число представленное в символьном шестнадцатиричном формате в целое
число представленное в символьном двоичном формате (тип строки - Паскаль-строка).

Спасибо всем, кто откликнулся!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2010, 01:13
Ответы с готовыми решениями:

Перевод чисел в двоичную систему
есть код. умножаю два числа. ответ заносится в ах, но в шестнадцатеричной системе. как сделать так чтобы выводил в двоичной? скажите...

Перевод числа в двоичную систему счисления (подпрограмма на встроенном ассемблере для FreePascal)
Дано однобайтное число. Написать подпрограмму на языке Ассемблера, для перевода числа в двоичную систему счисления. Строка имеет тип Pchar...

Перевод двухразрядных чисел в двоичную систему
Здравствуйте, Я написал алгоритм через простое деление , но Мне необходимо написать алгоритм на уровне микроопераций перевода...

4
4187 / 1835 / 220
Регистрация: 06.10.2010
Сообщений: 4,123
13.12.2010, 09:25
Каждый символ шестнадцатитеричного числа соответствует четырём символам двоичного. Построй таблицу соответствия и переводи по ней.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
movzx cx,[hex]
mov [bin],cl
shl [bin],2
mov si,hex+1
mov di,bin+1
xor bx,bx
@@:lodsb
   mov bl,al
   shl bx,2
   mov eax,[table+bx]
   stosd
loop @b
0
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
13.12.2010, 13:28
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
;***************************************************************
; Programa pakeicianti dvejetaini skaiciu desimtainiu
;***************************************************************
.model small
buferioDydis  EQU  5
.stack 256
.data
  bufDydis DB  buferioDydis          ;kiek maksimaliai simboliu galima nuskaityti
  nuskaite DB  ?                     ;cia bus patalpinta, kiek simboliu nuskaityta
  buferis  DB  buferioDydis dup (?)  ;cia bus talpinamas nuskaitytas skaicius
  
  ;kiti duomenys
  SUM      DW 0
  ivesk    DB "HEX:$"
  enteris  DB  13, 10,'$'
  rezult   DB "DEC:$"
  empty    DB "Nerasta jokiu simboliu $"
  klaida   DB "KLAIDA! $"
  ;Pagalbos praneрimas:
  help     DB "Daemon025", 10, 13,"Informacines technologijos", 10, 13,"I kursas", 10, 13,"1 grupe", 10, 13,"17 uzduotis", 10, 13,"Parasykite programa, kuri ivesta ilga sesioliktaini skaiciu uzraso dvejetainiu pavidalu; $"
 
.code
  pradzia:
  MOV  ax, @data                         ;reikalinga kiekvienos programos pradюioj
  MOV  ds, ax                            ;reikalinga kiekvienos programos pradюioj
 
  MOV  ch, 0      
  MOV  cl, [es:0080h]                    ;programos paleidimo parametru simboliu skaicius raрomas ES 128-ame (80h) baite
  CMP  cx, 0                             ;jei paleidimo parametru nera,
  JE   Nera                              ;nereikia nieko tikrinti.
  MOV  bx, 0081h                         ;programos paleidimo parametrai raрomi segmente es pradedant 129 (arba 81h) baitu
Ieskok:
  CMP  [es:bx], '?/'                     ;atmintyje jaunesnysis baitas saugomas pirmiau,
                                         ;todel pirmasis baitas iraрomas i bl, o antrasis i bh.
                                         ;taip '/?' virsta '?/'.
  JE   Yra                               ;jeigu radau '/?', vadinasi reikia spausdinti praneрimа
  INC  bx                                ;neradau '/?' рiuose baituose, paslenku rodyklж ir tikrinu toliau esancius parametrus
  LOOP Ieskok                            ;jei dar nepatikrinti visi parametrai, reikia tikrinti toliau
  JMP  Nera                              ;jei patikrinti visi parametrai ir nerastas '/?' reikia baigti programos darbа
 
  ;spausdinu i ekranа pagalbos praneрimа
Yra:
  MOV  ah, 9                             ;i ah iraрau dosinio pertraukimo funkcijos numeri
  MOV  dx, offset help                   ;i dx iraрau nuorodа i spausdinamo teksto pradюiа
  INT  21h 
  JMP  pabaiga                          ;iрkvieciu dosini pertraukimа - spausdinu praneрimа
Nera:
  MOV  ah, 9
  MOV  dx, offset ivesk
  INT  21h                               ;spausdinamas prasymas ivesti eilute
  
  MOV  ah, 0Ah
  MOV  dx, offset bufDydis
  INT  21h                               ;nuskaitoma ivesta eilute
  
  MOV  ah, 9
  MOV  dx, offset enteris                ;kursorius nukeliamas i nauja eilute
  INT  21h                               ;kursorius nukeliamas i nauja eilute
  MOV  cl, nuskaite                      ;i cl idedama kiek simboliu buvo nuskaityta                                     
  CMP  cl, 0                              ;tikriname ar buvo nuskaityti simboliai
  JE tuscia                              ;Jei nieko persokame i 'tuscia' 
  MOV  si, offset buferis  ;i si idedamas pirmojo nuskaityto simbolio adresas
          ;si - einamojo simbolio adresas
  MOV  dl, '0'
  MOV  dh, '9'
  MOV  al, 'A'
  MOV  ah, 'F' 
 
ciklas:
  CMP  byte ptr [si], dl        ;jei einamasis simbolis didesnis uz '0'
  JB   error_1         ;tokiu atveju tikriname ar tai skaicius
  CMP  byte ptr [si], ah        ;jei einamasis simbolis mazesnis uz '9'
  JA   error_1         ;tokiu atveju tai ne didzioji raide
  CMP  byte ptr [si], dh
  JB   nekeisti
  CMP  byte ptr [si], al
  JB   error_1 
  
nekeisti:
  INC  si      ;perstumiame adresa vienu baitu i prieki -
               ;i kita nuskaityta simboli
  LOOP ciklas
  
  MOV ah, 9
  MOV dx, offset rezult                 ;rezultato pranesimas
  INT 21h
  
  MOV cl, nuskaite
  XOR ax, ax                            ;isvalome ax registra, nes jis dalyvaus skaiciaus konvertavime
  MOV BX, 1
  DEC si                                ;sumaziname steko adresa vienetu, nes praejusiame padidinome ji +1 per daug
next_digit:
  MOV al, byte ptr [si]                  ;pasiimame skaiciu
  CMP al, '9'
  JB skaicius
  JMP raide
Skaicius:  
  SUB al, 30h
  JMP pradedam
raide:
  SUB al, 37h
pradedam:
  MUL BX                                ;Cia dauginame musu skaiciu (0 .. F) *2-n laipsnyje
  ADD SUM, ax                            ;Pridedame gauta rezultata prie dx
  SHL bx, 4
  DEC si                                ;keliaujame iki kito skaiciaus
  LOOP next_digit
  
  MOV ax, SUM                            ;priskiriame ax:= dx
  CALL Skaiciuok                         ;iskvieciame skaiciaus spausdinimo procedurа 
  JMP pabaiga                            ;persokame i progarmos pabaiga  
  
error_1:
  MOV ah, 9
  MOV dx, offset klaida                 ;pranesimas apie tuscia buferi
  INT 21h     
  JMP pabaiga 
  
tuscia:
  MOV ah, 9
  MOV dx, offset empty                  ;pranesimas apie tuscia buferi
  INT 21h      
pabaiga:
  MOV  ah, 4Ch                          ;reikalinga kiekvienos programos pabaigoj
  MOV  al, 0                            ;reikalinga kiekvienos programos pabaigoj
  INT  21h 
  
PROC Skaiciuok
  ;Korektiрka procedыra privalo po darbo atstatyti panaudotu registru reikрmes
  ;Todel prieр tai turime jas kur nors iрsisaugoti
  ;Patogiausia tai daryti steke
  PUSH  ax
  PUSH  cx
  PUSH  dx
  
  MOV  cx, 2                           ;kadangi naudojam deрimtainж sistemа, tai dalinsim iр 10
  PUSH  "$$"                           ;kad spausdindami skaitmenis iр steko, galetume rasti pabaigа
Dalink:
  MOV  dx, 0                           ;tiesiog iрvalom registrа, nes jis dalyvaus dalyboje
  DIV  cx                              ;[DX,AX]:10 = AX(liek DX)
  PUSH  dx                             ;idedam skaitmeni i stekа; deja, negalime ideti 1 baito
  CMP  ax, 0                           ;ar dar neperskaiteme viso skaiciaus?
  JA  Dalink                           ;jei ne, skaitom toliau
 
  ;pradedam skaiciaus spausdinimа
  MOV  ah, 2                           ;i AH irasom simbolio spausdinimo dosines funkcijos numeri
Spausdink:
  POP  dx                              ;isimam skaitmeni is steko
  CMP  dx, "$$"                        ;ar isspausdinome visа skaiciu?
  JE  Finish                           ;jei taip, reikia baigti darbа
  ADD  dl, '0'                         ;liekanos jaunesnysis baitas - tai vienas skaitmuo; prideje simbolini 0 iр skaiciaus (pvz.: 1) gausime simboli ('1')
  INT  21h                             ;jei ne, spausdinam skaitmeni
  JMP  Spausdink                       ;spausdink kitа skaitmeni
Finish:
  ;Turime atstatyti iрsaugotu registru reikрmes
  POP  dx
  POP  cx
  POP  ax
  RET                                   ;grizimo is proceduros komanda
  Skaiciuok ENDP                        ;reikalinga kiekvienos proceduros pabaigoj
END pradzia
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.12.2010, 13:38
Daemon025, комментарии на литовском? Странный язык...
Programa pakeicianti dvejetaini skaiciu desimtainiu --> (Google) Программа заменяет бинарных десятичной
Nerasta jokiu simboliu --> Не найдено в любой символ
isimam skaitmeni is steko ar isspausdinome visа skaiciu? --> Удалить из стека или цифровой печати visа номер?
0
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
13.12.2010, 14:07
Цитата Сообщение от Mikl___ Посмотреть сообщение
Daemon025, комментарии на литовском? Странный язык...
Programa pakeicianti dvejetaini skaiciu desimtainiu --> (Google) Программа заменяет бинарных десятичной
Nerasta jokiu simboliu --> Не найдено в любой символ
isimam skaitmeni is steko ar isspausdinome visа skaiciu? --> Удалить из стека или цифровой печати visа номер?
Да, на литовском. Здесь перевод не очень точен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2010, 14:07
Помогаю со студенческими работами здесь

Перевод числа из шестнадцатеричной сс в двоичную
16-ричное число, введённое пользователем программы, преобразовать в двоичное число. Результат вывести на экран.

Функция перевода из шестнадцатеричной двоичную систему счисления и наоборот
Здравствуйте! Помогите, пожалуйста написать несколько функций. Нужны функции перевода чисел из 16 сист.счисл в 2 сист.счисл, и наоборот....

Перевод из шестнадцатеричной системы счисления в двоичную
Напишите программу, которая переводит число (возможно, отрицательное), записанное в шестнадцатеричной системе счисления, в двоичную систему.

Перевод из шестнадцатеричной системы счисления в двоичную
Дано натуральное число P, заданное в шестнадцатеричной системе счисления. Перевести его в двоичную систему счисления. Delphi 7.

Перевод из шестнадцатеричной системы в двоичную и наоборот
Разработка программы перевода чисел из шестнадцатеричной системы в двоичную и наоборот.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru