1 DATAS segment 2 Temp db '0000H','$' 3 DATAS ends 4 CODES segment 5 START: 6 mov AX,DATAS 7 mov DS,AX 8 ;正式代碼開始 9 mov AX,12ABH ;設置須要顯示的AX的值 10 mov si,offset Temp+3;保存存儲結果的字符串的最後一個字符偏移地址 11 xor cx,cx ;對cX清零 12 mov cl,4 ;設置循環次數爲4次 13 14 MainPart: 15 mov DH,AL ;將Al的內容傳送給DH 16 17 shr AX,1 18 shr AX,1 19 shr AX,1 20 shr AX,1 21 ;上述4句爲使AX邏輯右移4位 理論上能夠寫成 shr AX ,cl(cl設置爲4) 22 ;但這個地方cl要記錄循環次數每次循環會是cl-1因此沒法知足正常的移位須要 23 and dh,0FH 24 add dh,30H 25 cmp dh,':' ;':'的ASCII比9大1 而字母的ASCII碼與數字的ASCII碼中間隔了7個其它字符 26 ja isLetter ;若是爲字母則跳轉 27 jb No ;若是不是 28 29 isLetter: 30 add dh,7H ;ASCII碼加7變爲字母 31 No: 32 mov [si],dh ;將字符存入,待存放內容的字符串的對應位置 33 34 dec si ;待存放內容的內存地址自減1 35 loop MainPart 36 37 print: 38 mov dx,offset Temp ;將帶打印的字符串的偏移地址存放進dx中 39 mov ah,09 ;設置DOS 09號功能 40 int 21H ;功能調用 41 mov al,0 42 mov ah,4CH 43 int 21H 44 45 CODES ends 46 end START