还请各位帮帮忙,再写写.
谢谢!!!!!!!!!!
我不知道你要的是字节转换还是字转换,来个字转换的吧:
这里已经定义好了一个数,当然还可以通过输入
DSEG SEGMENT
NUM DW 123
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV CX,0503H ;应该都知道通过8421码换算二--十六进制,转换八进制,是取3位为一换成一位八进制数
而寄存器普遍不是3的整数位长,而取3位都必须从低位开始取,如果我们是先取低位的话
虽然容易,但会出现倒序输出,所以在这里先进行了高位,去除最高位1位后,剩下的就可
正常取啦
MOV AH,2
MOV BX,NUM
ROL BX,1 ;先取第1位,具体看最后说明
MOV DX,BX
AND DX,1 ;只有一位,所以其余高位清零
OR DL,30H ;转ASCII码
INT 21H
NEXT: ROL BX,CL ;开始正常取3位数转换
MOV DX,BX
AND DX,7 ;因为只最低3位有效,所以和7进行逻辑与,清零其余高位
OR DX,30H
INT 21H
DEC CH
CMP CH,0 ;统计取3位的次数
JNZ NEXT
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
例中的123形式为 1111011,在寄存器中的存放为 0000000001111011,如果每次取3位该从最低位开始,分成这样
0 000 000 001 111 011,最高位只能取1位,所以为了正常输出,从最高位取,必然先移位的是次数为1,其余便可正常
移位