Прошу объяснить код написанной программы

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
29demon
Сообщения: 0
Зарегистрирован: 12 июн 2013, 18:12

12 июн 2013, 18:18

Прошу объяснить код написанной программы. Как она работает??
Программа преобразует 4-х разрядное двоичное число в шестнадцатeричное.

Код: Выделить всё

Masm
model    small
stack    256
.data
msg1    db    0ah,0dh,"*Преобразование 4-х разрядного двоичного числа*$"
msg2    db    0ah,0dh,"Биты ¦3210¦ => H$"
msg3    db    0ah,0dh,"Ввод: $"
msg4    db    "  => $"
.code
.486
go:    mov ax,@data
    mov ds,ax
;Вывод заголовка программы
    mov ah,09h
    mov dx,offset msg1
    int 21h
    mov dx,offset msg2
    int 21h
    mov dx,offset msg3
    int 21h
;Ввод двоичного четырехразрядного числа
    mov cx,4
    xor dx,dx
cycle:
    mov ah,01h            
    int 21h            
    sub al,30h            
    shl dl,1            
    

add dl,al             
    loop cycle
;Вывод строки " => "
    push dx            
    mov ah,09h
    mov dx,offset msg4
    int 21h
    pop dx            
;Результат: двоичное число в регистре dl
;Вывод шестнадцатеричного числа на экран из dl
    cmp dl,10            
    jl  less
    add dl,37h            
    mov ah,02h
    int 21h
    jmp exit
less:    add dl,30h            
    mov ah,02h
    int 21h

exit:
    mov ax,4c00h
    int 21h
end go
Ответить