Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2013, 01:19   #1
litsedeika
Новичок
Джуниор
 
Регистрация: 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
litsedeika вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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