вывод на экран содержимого dl
От: AntiMozg  
Дата: 17.03.08 19:31
Оценка:
я начинающий антимозг, помогите разобраться с выводом на экран
привожу листинг из книги юрова
тут рез-т сохраняется в регистр dl
задача: вывести на экран

;————Prg_6_1.asm—————————————————
;Программа преобразования двузначного шестнадцатеричного числа
;в символьном виде в двоичное представление.
;Вход: исходное шестнадцатеричное число из двух цифр,
;вводится с клавиатуры.
;Выход: результат преобразования помещается в регистр dl.
;—————————————————————————————————
data segment para public "data"    ;сегмент данных
message    db    "Введите две шестнадцатеричные цифры,$"
data ends
stk segment stack
db    256 dup ("?")    ;сегмент стека
stk ends
code    segment    para public "code"    ;начало сегмента кода
main    proc            ;начало процедуры main
assume    cs:code,ds:data,ss:stk
    mov    ax,data    ;адрес сегмента данных в регистр ax
    mov    ds,ax    ;ax в ds
    mov    ah,9
    mov    dx,offset message
    int    21h
    xor    ax,ax        ;очистить регистр ax
    mov    ah,1h        ;1h в регистр ah
    int    21h        ;генерация прерывания с номером 21h
    mov    dl,al        ;содержимое регистра al в регистр dl
    sub    dl,30h        ;вычитание: (dl)=(dl)—30h
    cmp    dl,9h        ;сравнить (dl) с 9h
    jle    M1        ;перейти на метку M1, если dl<9h или dl=9h
    sub    dl,7h        ;вычитание: (dl)=(dl)—7h
M1:                ;определение метки M1
    mov    cl,4h        ;пересылка 4h в регистр cl
    shl    dl,cl        ;сдвиг содержимого dl на 4 разряда влево
    int    21h        ;вызов прерывания с номером 21h
    sub    al,30h        ;вычитание: (dl)=(dl)—30h
    cmp    al,9h        ;сравнить (al) с 9h    28
    jle    M2        ;перейти на метку M2, если al<9h или al=9h
    sub    al,7h        ;вычитание: (al)=(al)—7h
M2:                ;определение метки M2
    add    dl,al        ;сложение: (dl)=(dl)+(al)
    mov    ax,4c00h    ;пересылка 4c00h в регистр ax
    int    21h        ;вызов прерывания с номером 21h
main    endp            ;конец процедуры main
code    ends            ;конец сегмента кода
end    main            ;конец программы с точкой входа main
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.