汇编编程一点点提高2
编一个程序,要求把NUM单元存放的一个8位二进制数,在屏幕上显示成16进制数。
DATAS SEGMENT ;此处输入数据段代码 NUM db 11001100b ;dch mess db 'B converted to h:$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 mov ah,9 mov dx,seg mess mov ds,dx mov dx,offset mess int 21h mov bl,NUM;将NUM装入BL mov ch,2;控制循环次数 again: mov cl,4 rol bl,cl;循环左移将二进制数的高四位移到低四位 mov dl,bl;保护二进制数 and dl,0fh;转换为ASCII码 add dl,30h;判断是否是大于9的ascii码 cmp dl,3ah;转换为字母 jb show add dl,7h show: ;显示 mov ah,2 int 21h dec ch jnz again mov dl,48h mov ah,2 int 21h MOV AH,4CH INT 21H CODES ENDS END START
这个程序的重点有两个:1,将二进制数循环左移四位转换为一位十六进制;
2.十六进制输出问题,判断是否大于3ah,大于的话加7转换为字母;
还需要注意的是:调用DOS的2号功能是单个字符显示,9号功能是字符串显示