|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 3-3 于 2017-6-25 20:24 编辑
- assume cs:code,ds:data
- data segment
- db 10 dup (0)
- data ends
- code segment
- start:
- mov ax,12666
- mov bx,data
- mov ds,bx
- mov si,0
- call dtoc
-
- mov dh,8
- mov dl,3
- mov cl,2
- call show_str
-
- mov ax,4c00h
- int 21h
-
- dtoc:
- push di
- push bx
- push ds
- push si
- push cx
- push dx
- push ax
-
- mov si,0
- d20:
- mov di,10
- mov cx,ax
- jcxz d21 ;低位如果为零
-
- push ax
- mov ax,dx
- mov dx,0
- div di
- mov bx,ax
- pop ax
- div di
- add dx,30h
- push dx
- mov dx,bx
- inc si
- jmp d20
-
- d21:
- mov cx,dx
- jcxz d22 ;高低位全部为0时,转到d22执行
- jmp d20
-
- d22:
- mov di,0
- mov cx,si
- d23:
- pop ax
- mov ds:[di],al
- inc di
- loop d23
-
-
- mov dl,0
- mov [si],dl
-
-
- pop ax
- pop dx
- pop cx
- pop si
- pop ds
- pop bx
- pop di
- ret
-
-
- show_str:
- push ax
- push cx
- push si
- push es
- push dx
-
- mov ax,160
- mul dh
- mov bx,ax
-
- mov ax,2
- mul dl
- add bx,ax
-
- mov ax,0b800h
- mov es,ax
-
- mov al,cl
- mov cl,0
-
- s2:
- mov ch,[si]
- jcxz output
-
- mov es:[bx],ch
- mov es:[bx+1],al
- add bx,2
- inc si
- jmp s2
-
-
- output:
- pop dx
- pop es
- pop si
- pop cx
- pop ax
- ret
-
-
-
- code ends
- end start
复制代码
代码如上,使用的是实验10(2)的除法,调试的时候,使用g ,就能够显示 12666,如图1
可是在直接执行的时候,根本没有显示 12666,如图2显示的,
这是怎么回事?都试了两天了。。。
你的程序我调试了一下,调试的时候是没有问题。
第一次执行也没有问题,但是第二次执行后就出问题了。
你的第四十行代码 mov ax,dx 我感觉有问题。dx初始值是什么?没有地方将它初始化啊!
在循环d20前面加上,sub dx,dx,初始化dx后,你再试试。
我试了一下,反复执行没有问题了。
|
-
图1,未显示12666
-
|