|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.01.2013, 01:19 | #1 |
Новичок
Джуниор
Регистрация: 26.01.2013
Сообщений: 1
|
Перевод в BCD-упакованный формат
Имеем дефолтный код перевода из десятичного числа в BCD-упакованный формат под 8086 (tasm). Нужно, чтобы переводил двоичные числа. Первой моей мыслью было перед исходным кодом вставить перевод из двоичного в десятичные, но там такой геморрой со степеням... Вряд ли это верный путь.
Помогите пожалуйста. < 1 > title a21.exe -- from 10 to BCD compressed < 2 > code segment < 3 > assume cs:code, ds:code < 4 > main: < 5 > mov ax,code < 6 > mov ds,ax < 7 > again: < 8 > mov si,10 < 9 > mov bx,0 ; into bx < 10 > mov dl,'?' < 11 > call display < 12 > mov cx, 5 < 13 > next: < 14 > call kbin < 15 > cmp al,' ' < 16 > je back < 17 > mov ah,0 < 18 > and al, 00001111b < 19 > mov di,ax < 20 > mov ax,bx < 21 > mul si < 22 > add ax, di < 23 > mov bx, ax < 24 > loop next < 25 > back: < 26 > mov dl,'=' < 27 > call display < 28 > mov ax,bx < 29 > call pbcd < 30 > lea bx,bcd < 31 > add bx,2 < 32 > mov dl,[bx] < 33 > call hex < 34 > lea bx,bcd < 35 > add bx,1 < 36 > mov dx,[bx] < 37 > call hex < 38 > lea bx,bcd < 39 > add bx,0 < 40 > mov dx,[bx] < 41 > call hex < 42 > call crlf < 43 > jmp again < 44 > < 45 > pbcd proc ; ax to bcd < 46 > push di < 47 > push si < 48 > mov di,0 < 49 > mov cx, 3 < 50 > mov si,100 < 51 > a10: < 52 > mov dx,0 < 53 > div si < 54 > push ax < 55 > mov al,dl < 56 > lea bx,tablebcd < 57 > xlat < 58 > mov [di+offset bcd], al < 59 > inc di < 60 > pop ax < 61 > loop a10 < 62 > pop si < 63 > pop di < 64 > ret < 65 > bcd dt 12345 < 66 > tablebcd db 00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h, 09h < 67 > db 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h < 68 > db 20h, 21h, 22h, 23h, 24h, 25h, 26h, 27h, 28h, 29h < 69 > db 30h, 31h, 32h, 33h, 34h, 35h, 36h, 37h, 38h, 39h < 70 > db 40h, 41h, 42h, 43h, 44h, 45h, 46h, 47h, 48h, 49h < 71 > db 50h, 51h, 52h, 53h, 54h, 55h, 56h, 57h, 58h, 59h < 72 > db 60h, 61h, 62h, 63h, 64h, 65h, 66h, 67h, 68h, 69h < 73 > db 70h, 71h, 72h, 73h, 74h, 75h, 76h, 77h, 78h, 79h < 74 > db 80h, 81h, 82h, 83h, 84h, 85h, 86h, 87h, 88h, 89h < 75 > db 90h, 91h, 92h, 93h, 94h, 95h, 96h, 97h, 98h, 99h < 76 > pbcd endp < 77 > < 78 > display proc < 79 > mov ah,2 < 80 > int 21h < 81 > ret < 82 > display endp < 83 > < 84 > kbin proc near < 85 > mov ah,1 < 86 > int 21h < 87 > ret < 88 > kbin endp < 89 > < 90 > hex proc near < 91 > mov ax,cs < 92 > mov ds,ax ; set ds=cs < 93 > push dx < 94 > mov bx,offset table < 95 > mov al,dl < 96 > shr al, 1 < 97 > shr al, 1 < 98 > shr al, 1 < 99 > shr al, 1 < 100 > xlatb ;translate < 101 > mov dl,al < 102 > call display < 103 > pop ax < 104 > and al,00001111b < 105 > xlatb ;translate < 106 > mov dl,al < 107 > call display < 108 > ret < 109 > table db '0123456789ABCDEF' < 110 > hex endp < 111 > < 112 > crlf proc near < 113 > mov dl,10 < 114 > call display < 115 > mov dl,13 < 116 > call display < 117 > ret < 118 > crlf endp < 119 > code ends < 120 > end main |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Assembler, BCD-формат | Аsker | Помощь студентам | 2 | 12.01.2012 21:42 |
Перевод даты в строковый формат | Raspad | Visual C++ | 5 | 29.12.2011 18:43 |
Перевод даты в строковый формат | Raspad | Общие вопросы C/C++ | 1 | 29.12.2011 00:19 |
Создать свой упакованный тип в C# | Никки | Общие вопросы .NET | 1 | 25.10.2009 11:49 |
Перевод цифровой информации из аscii в bcd? | ALEX_RAS | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 24.05.2008 17:41 |