Перевод из 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'), '$'
Объяснение кода листинга программы
- В начале кода объявляется буфер вывода (OUTBUF), который содержит 13 байт, включая завершающий символ новой строки (10), символ перевода строки (16) и 10 символов '0'.
- Затем, возможно, происходит чтение или ввод числа в буфер.
- Далее, с помощью цикла, число переводится из десятичной системы счисления в двоичную.
- В конце, возможно, выводится результат перевода в консоль или на экран.