xxdhj 发表于 2009-8-1 18:06:51

一个简单的汇编题帮我看看那点错了?

在DEBUG里也没找到错误,请不要给小弟写其他的思路,小弟就想知道我的哪一点错误了
我想让显示12666 可是调试的时候正常就是 不能正常运行
我也知道另外一个方法可以实现这个效果 可是我就是想知道 我的这个程序哪一点错误了

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,0cah;cl中存放颜色属性(0cah为红底高亮闪烁绿色属性)

      call show_str;调用显示字符串的子程序



      mov ax,4c00h

      int 21h

dtoc:      ;数值显示的子程序定义
push ax
push si
push bx
push dx
push cx

mov bx,10
mov di,0
hao:mov cx,ax
jcxz hao2
div bx
add dx,30h
push dx
inc di
mov dx,0
jmp short hao
hao2:mov cx,di
hao1:pop dx
mov ds:,dl
inc si
loop hao1
pop cx
pop dx
pop bx
pop si
pop ax
ret


show_str:   ;显示字符串的子程序

      push bx

      push cx

      push si

      mov al,0A0h

      dec dh

      mul dh

      mov bx,ax

      mov al,2

      mul dl

      sub ax,2

      add bx,ax

      mov ax,0B800h

      mov es,ax

      mov di,0

      mov al,cl

      mov ch,0

s:      mov cl,ds:

      jcxz ok

      mov es:,cl

      mov es:,al

      inc si

      add di,2

      jmp short s

ok:   pop si

      pop cx

      pop bx

      ret
code ends

end start

[ 本帖最后由 xxdhj 于 2009-8-4 09:03 编辑 ]

xxdhj 发表于 2009-8-4 10:06:34

汗 原来清空dx的位置放的稍微靠后了些 我晕死怪不得调试也不显示错误呢 因为都是实现的一个功能

StarsunYzL 发表于 2009-9-11 15:13:39

16位汇编不懂,帮不上忙,Win32 Asm倒是懂一些
页: [1]
查看完整版本: 一个简单的汇编题帮我看看那点错了?