1 ;输出寄存器AX中的内容(子程序) 2 DATAS segment 3 4 DATAS ends 5 CODES segment 6 START: 7 mov AX,DATAS 8 mov DS,AX 9 ;正式代码开始 10 mov AX,1AF4H ;设置需要显示的AX的值 11 call PrintAX 12 mov al,0 13 mov ah,4CH 14 int 21H 15 16 PrintAX proc 17 jmp Next 18 Temp db '0000H','$' 19 Next: 20 mov si,offset Temp+3;保存存储结果的字符串的最后一个字符偏移地址 21 xor cx,cx ;对cX清零 22 mov cl,4 ;设置循环次数为4次 23 24 MainPart: 25 mov DH,AL ;将Al的内容传送给DH 26 27 shr AX,1 28 shr AX,1 29 shr AX,1 30 shr AX,1 31 ;上述4句为使AX逻辑右移4位 理论上可以写成 shr AX ,cl(cl设置为4) 32 ;但这个地方cl要记录循环次数每次循环会是cl-1所以无法满足正常的移位需要 33 and dh,0FH 34 add dh,30H 35 cmp dh,':' ;':'的ASCII比9大1 而字母的ASCII码与数字的ASCII码中间隔了7个其它字符 36 ja isLetter ;如果为字母则跳转 37 jb No ;如果不是 38 39 isLetter: 40 add dh,7H ;ASCII码加7变为字母 41 No: 42 mov [si],dh ;将字符存入,待存放内容的字符串的对应位置 43 44 dec si ;待存放内容的内存地址自减1 45 loop MainPart 46 47 print: 48 mov dx,offset Temp ;将带打印的字符串的偏移地址存放进dx中 49 mov ah,09 ;设置DOS 09号功能 50 int 21H ;功能调用 51 ret 52 PrintAX endp 53 54 CODES ends 55 end START