. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  求救  [待解决] 回复[ 1次 ]   点击[ 483次 ]  
heshen75
[帖 主]   [ 发表时间:2008-02-05 09:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-29 20:49
我写的程序,但一执行到DTOC段PUSH SI的下一条指令 就出遇到无效指令 CS:0000 IP:0077 OP:F0 37 05 0A 02选择"关闭"终止应用程序.这是怎么回事,请教高手
assume cs:code
data segment
dd 197585,197685,197785,198085
data ends
talk segment
dw 16 dup(0)
talk ends
stack segment
dw 16 dup(0)
stack ends
code segment
start:mov ax,data
      mov es,ax
      mov ax,talk
      mov ds,ax
      mov ax,stack
      mov ss,ax
      mov sp,16
      mov si,0
      mov bh,2
      mov bl,2
      mov cx,4
liang:mov ax,es:[si]
      mov dx,es:[si+2]
      call dtoc
      mov dh,bh
      mov dl,bl
      mov cl,7
      call show_str
      add si,4
      inc bh
      pop cx
      loop liang
      mov ax,4c00h
      int 21h
dtoc:push bx 
      push ax
      push dx
      push cx
      push si
   s0:mov cx,10
      call divdw
      mov bx,cx
      mov cx,ax
      add bx,30h
      push bx
      inc di
      jcxz s1
      jmp short s0
   s1:mov cx,di
   s2:pop bx
      mov ds:[si],bl
      inc si
      loop s2
  ok0:pop di
      pop si
      pop cx
      pop dx
      pop ax
      pop bx
      ret 
show_str:push bx
         push es
         push cx
         push si
         mov ax,0b800h
         mov es,ax
         mov ax,0
         mov al,160
         mul dh
         mov bx,ax
         mov ax,0
         mov al,2
         mul dl
         add bx,ax
         mov al,cl
       s:mov cl,ds:[si]
         mov ch,0
         jcxz ok1
         mov ch,al
         mov word ptr es:[bx],cx
         inc si
         add bx,2
         jmp short s
     ok1:pop si
         pop cx  
         pop es
         pop bx
         ret
divdw:push bx
      push si
      push ax
      push cx
      mov si,ax
      mov ax,dx
      mov dx,0
      div cx
      mov bx,ax
      mov ax,si
      div cx
      mov cx,dx
      mov dx,bx
      pop cx
      pop ax
      pop si
      pop bx
      ret
code ends
end start
wdm
[第1楼]   [ 回复时间:2008-02-05 16:05 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
debug一下,注意看看是不是因为栈空间或者数据的问题。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved