Перевод из 10 системы счисления в 2 - Assembler

Узнай цену своей работы

Формулировка задачи:

Всем привет! Нашел программу на форуме, но в некоторых местах не понимаю что она делает. Можете помочь написать комментарии? Заранее спасибо))
.MODEL small
.STACK 64
.DATA 
org 150h
x_ascii db 20h dup(?)
t1 db 0dh,0ah,"Vvedite chislo i nagmite Enter"
db 0dh, 0ah, "$"
t3 db 0dh, 0ah, "V dvoichnoi sisteme chislo vyglyadet tak"
db 0dh,0ah,"$"
buf db 16 dup(?),"$"
.CODE
vt proc
mov ax,@data
mov ds, ax
mov  es, ax
d: lea dx, t1
mov ah,09h
int 21h
lea di, x_ascii
call ink
call des_2
push ax
lea dx,t3
mov ah,9h
int 21h
pop ax
call bin_dis
push     ax
mov ah,1h
int 21h
cmp al,"Y"
loope    d
cmp al,"y"
loop d
mov ah,4ch
int 21h
vt endp
ink proc
 
xor  cx,cx
l1: 
mov  ah,1
int 21h
stosb
inc cx
cmp al,0dh
jnz l1
dec cx
ret
ink endp
dis proc
 
r1: mov dl,[di]
mov ah,2
int 21h
inc di
loop r1
ret
dis endp
des_2 proc
 
mov si,10
lea di,x_ascii
sub ax,ax
v1: mul si
mov bp,ax
mov al,[di]
sub al,48
inc di
mov  ah,ch
add ax,bp
loop v1
ret
des_2 endp
bin_dis proc
 
lea di,buf
mov cx,16
mov  bx,ax
mov  dx,ax
conv:   
mov  al,ch
shl dx,1
adc  al,'0'
stosb   
loop conv
mov ah,9h
lea dx,buf
int 21h
mov  ax,bx
ret
bin_dis endp
 
end vt

Решение задачи: «Перевод из 10 системы счисления в 2»

textual
Листинг программы
OUTBUF  DB      13, 10, 16 DUP ('0'), '$'

Объяснение кода листинга программы

  1. В начале кода объявляется буфер вывода (OUTBUF), который содержит 13 байт, включая завершающий символ новой строки (10), символ перевода строки (16) и 10 символов '0'.
  2. Затем, возможно, происходит чтение или ввод числа в буфер.
  3. Далее, с помощью цикла, число переводится из десятичной системы счисления в двоичную.
  4. В конце, возможно, выводится результат перевода в консоль или на экран.

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы