标签:移位 偏移地址 次数 显示 循环 保存 xor 调用 清零
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
标签:移位 偏移地址 次数 显示 循环 保存 xor 调用 清零
原文地址:https://www.cnblogs.com/roseAT/p/10240329.html