汇编:输出寄存器AX中的内容(子程序)

时间:2023-03-09 15:37:00
汇编:输出寄存器AX中的内容(子程序)
 ;输出寄存器AX中的内容(子程序)
DATAS segment DATAS ends
CODES segment
START:
mov AX,DATAS
mov DS,AX
;正式代码开始
mov AX,1AF4H ;设置需要显示的AX的值
call PrintAX
mov al,
mov ah,4CH
int 21H PrintAX proc
jmp Next
Temp db '0000H','$'
Next:
mov si,offset Temp+;保存存储结果的字符串的最后一个字符偏移地址
xor cx,cx ;对cX清零
mov cl, ;设置循环次数为4次 MainPart:
mov DH,AL ;将Al的内容传送给DH shr AX,
shr AX,
shr AX,
shr AX,
;上述4句为使AX逻辑右移4位 理论上可以写成 shr AX ,cl(cl设置为4)
;但这个地方cl要记录循环次数每次循环会是cl-1所以无法满足正常的移位需要
and dh,0FH
add dh,30H
cmp dh,':' ;':'的ASCII比9大1 而字母的ASCII码与数字的ASCII码中间隔了7个其它字符
ja isLetter ;如果为字母则跳转
jb No ;如果不是 isLetter:
add dh,7H ;ASCII码加7变为字母
No:
mov [si],dh ;将字符存入,待存放内容的字符串的对应位置 dec si ;待存放内容的内存地址自减1
loop MainPart print:
mov dx,offset Temp ;将带打印的字符串的偏移地址存放进dx中
mov ah, ;设置DOS 09号功能
int 21H ;功能调用
ret
PrintAX endp CODES ends
end START