二进制转十进制
1.写这个的时候我在想 为什么一定要用 bx ax不是16位数?为什么不能用 mov bl,10 余数存AH,商存AL,PUSH AL 后来调试的时候发现 PUSH POP 只能作字或者双字操作 PUSH AL 是字节操作 这个是不允许的
2.没有写 MOV DX,0 这一句的话会报除数错误,divide error ,虽然不太清楚为什么,但是直觉告诉我要注意恢复 初始化等
DATAS SEGMENT
;此处输入数据段代码
num dw 1001100110110110B
count dw 16
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov ax,num ;初始化 ax是需要转换的数字
mov cx,0 ;cx存放转换为十进制数之后的位数
mov bx,10 ;bx存放除数
legal1:
mov dx,0
div bx ;dx 存余数 ax 存商
push dx ;把余数压入栈中
inc cx
cmp al,0
jnz legal1
legal2:
pop dx
add dx,30h
mov ah,2
int 21h
loop legal2