Перевод числа из OCT в BIN систему счисления ассемблер - Assembler
Формулировка задачи:
Доброго времени суток! Стоит задача перевести число из 8 в 2 систему счисления на ассемблере. При запуске программы вводим число в 8 системе счисления и программа переводит это число в бинарную систему счисления. Не знаю, как описать этот перевод на ассемблере. Объясните пожалуйста на примере программы.
Решение задачи: «Перевод числа из OCT в BIN систему счисления ассемблер»
textual
Листинг программы
- .model small
- .386
- .data
- var db 5 dup(?)
- msg1 db 0Ah,0Dh,'input (oct): $'
- msg2 db 0Ah,0Dh,'output (bin): $'
- .stack
- db 255 dup(?)
- .code
- start:
- mov ax,@data
- mov ds,ax
- mov es,ax
- mov ah,09h
- lea dx,msg1
- int 21h
- lea di,var
- xor cx,cx
- input:
- mov ah,01h
- int 21h
- cmp al,0Dh
- je ready
- cmp al,'7'
- jbe skip
- mov ah,02h
- mov dl,08h
- int 21h
- mov ah,02h
- mov dl,20h
- int 21h
- mov ah,02h
- mov dl,08h
- int 21h
- jmp input
- skip:
- and al,0Fh
- stosb
- inc cx
- cmp cx,5
- je ready
- jmp input
- ready:
- or cx,cx
- je exit
- push cx
- lea si,var
- xor di,di
- xor ax,ax
- lodsb
- mov di,ax
- dec cx
- mov bx,8
- collect:
- or cx,cx
- je two
- mov ax,di
- mul bx
- mov di,ax
- xor ah,ah
- lodsb
- add di,ax
- dec cx
- jmp collect
- two:
- pop cx
- mov ax,3
- mul cx
- mov dx,ax
- mov cx,16
- sub cx,ax
- mov bx,di
- shl bx,cl
- mov cx,dx
- mov ah,09h
- lea dx,msg2
- int 21h
- bit:
- shl bx,1
- jc one
- zero:
- mov ah,02h
- mov dl,'0'
- int 21h
- jmp good
- one:
- mov ah,02h
- mov dl,'1'
- int 21h
- good:
- loop bit
- exit:
- mov ah,02h
- mov dl,0Ah
- int 21h
- mov ah,4Ch
- mov al,00h
- int 21h
- end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д