Програма не выводит на экран код символа. Можете подсказать где ошибка
model small
stack 100h
codeseg
main:
mov ah,1
int 21h
cmp dl,09h
ja m1
or dl,30h
jmp m2
m1:
sub dl,0Ah
add dl,'a'
m2:mov ah,2
mov dl,al
int 21h
end main
sackful up
Модератор: Andy
Начнем с того, что Int 21/AH=01h возвращает прочитанный символ в AL, а не в DL.
Также не ясен смысл магических действий по добавлению 30h или вычитанию 0Ah.
Также не ясен смысл магических действий по добавлению 30h или вычитанию 0Ah.
model small
stack 100h
dataseg
A db 0
codeseg
main:
mov cx,50
m:mov ah,01h
int 21h
cmp al,1bh
je m1
mov A,al
mov dl,3ah
mov ah,02h
int 21h
mov al,A
shr al,4
add al,30h
mov ah,02h
mov dl,al
int 21h
and A,0fh
cmp A,09h
jbe m2
add A,37h
jmp m3
m2:add A,30h
m3:mov al,A
mov ah,02h
mov dl,al
int 21h
Call nextl
loop m
nextl proc
mov dl,0ah
mov ah,02h
int 21h
xor ax,ax
xor dx,dx
ret
nextl endp
m1:mov ah,4ch
int 21h
end main
рабочий вариант !!
stack 100h
dataseg
A db 0
codeseg
main:
mov cx,50
m:mov ah,01h
int 21h
cmp al,1bh
je m1
mov A,al
mov dl,3ah
mov ah,02h
int 21h
mov al,A
shr al,4
add al,30h
mov ah,02h
mov dl,al
int 21h
and A,0fh
cmp A,09h
jbe m2
add A,37h
jmp m3
m2:add A,30h
m3:mov al,A
mov ah,02h
mov dl,al
int 21h
Call nextl
loop m
nextl proc
mov dl,0ah
mov ah,02h
int 21h
xor ax,ax
xor dx,dx
ret
nextl endp
m1:mov ah,4ch
int 21h
end main
рабочий вариант !!