2 个解决方案
#1
我也是初学者,你参考一下吧。
#2
楼上的是个方法,但完全不合题意。这样的题目,多是考移位指令和字符显示功能的。
以十六进制数据显示,就是每 4 位显示出一个数据字符,可以将这个功能做成子程,分别将 AL 的高 4 位和低 4 位来调用。
显示字符,可以用 int21h 的 AH=02h 功能调用;由 4 位的数据到显示的字符,需要个转换过程,可以查表,也可以分区判断。
以十六进制数据显示,就是每 4 位显示出一个数据字符,可以将这个功能做成子程,分别将 AL 的高 4 位和低 4 位来调用。
显示字符,可以用 int21h 的 AH=02h 功能调用;由 4 位的数据到显示的字符,需要个转换过程,可以查表,也可以分区判断。
code segment
assume cs:code
showh1 proc
and al, 0fh
add al, '0'
cmp al, '9'
jna l_sh
add al, 7
l_sh:
mov dl, al
mov ah, 2
int 21h
ret
showh1 endp
start::
mov al, 3dh
push ax
mov cl, 4
shr al, cl
call showh1
pop ax
and al, 0fh
call showh1
mov ah, 4ch
int 21h
code ends
end start
#1
我也是初学者,你参考一下吧。
#2
楼上的是个方法,但完全不合题意。这样的题目,多是考移位指令和字符显示功能的。
以十六进制数据显示,就是每 4 位显示出一个数据字符,可以将这个功能做成子程,分别将 AL 的高 4 位和低 4 位来调用。
显示字符,可以用 int21h 的 AH=02h 功能调用;由 4 位的数据到显示的字符,需要个转换过程,可以查表,也可以分区判断。
以十六进制数据显示,就是每 4 位显示出一个数据字符,可以将这个功能做成子程,分别将 AL 的高 4 位和低 4 位来调用。
显示字符,可以用 int21h 的 AH=02h 功能调用;由 4 位的数据到显示的字符,需要个转换过程,可以查表,也可以分区判断。
code segment
assume cs:code
showh1 proc
and al, 0fh
add al, '0'
cmp al, '9'
jna l_sh
add al, 7
l_sh:
mov dl, al
mov ah, 2
int 21h
ret
showh1 endp
start::
mov al, 3dh
push ax
mov cl, 4
shr al, cl
call showh1
pop ax
and al, 0fh
call showh1
mov ah, 4ch
int 21h
code ends
end start