. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  程序在debug下g正常显示数据,为什么直接运行就退出  [待解决] 回复[ 4次 ]   点击[ 292次 ]  
idpanjian
[帖 主]   [ 发表时间:2010-12-24 11:16 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-03 12:08
程序在debug下g正常显示数据,为什么直接运行就退出
zaixuexi
[第1楼]   [ 回复时间:2010-12-24 11:23 ]   [引用]   [回复]   [ top ] 
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28
方便贴下代码么
idpanjian
[第2楼]   [ 回复时间:2010-12-24 11:32 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-03 12:08
代码很乱,
assume cs:code 
data segment 
db '1975','1976','1977','1978','1979','1980','1981','1982','1983' 
db '1984','1985','1986','1987','1988','1989','1990','1991','1992' 
db '1993','1994','1995' 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 
dw 11542,14430,15257,17800 
data ends 
table segment 
db 21 dup ('year summ ne ??') 
table ends 
code segment 
start: mov ax,data 
       mov ds,ax 
       mov ax,table 
       mov es,ax 
       mov si,0        
       mov di,0 
       mov bx,0 
       mov cx,21 
     s:   
       mov ax,ds:[si] 
       mov es:[bx+di],ax 
       add si,2 
       add di,2 
       mov ax,ds:[si] 
       mov es:[bx+di],ax 
       mov al,' ' 
       mov es:[bx+4],ax 
       add bx,10h        
       mov di,0 
       add si,2 
       loop s 
    mov bx,0 
    mov cx,21 
    s0:    
       mov ax,ds:[si]        
       mov es:[bx+di+5],ax 
       add si,2 
       add di,2 
       mov ax,ds:[si] 
       mov es:[bx+di+5],ax 
       mov al,' ' 
       mov es:[bx+9],al 
       add bx,10h 
       mov di,0 
       add si,2        
       loop s0 
    mov bx,0 
    mov cx,21    
    s1: 
       mov ax,ds:[si] 
       mov es:[bx+di+0ah],ax 
       mov al,' ' 
       mov es:[bx+0ch],al 
       add bx,10h 
       add si,2 
       loop s1 
    mov bx,0    
    mov cx,21 
    s2: 
       mov ax,es:[bx+5] 
       mov dx,es:[bx+7] 
       div word ptr es:[bx+0ah] 
       mov es:[bx+0dh],ax 
       mov al,' ' 
       mov es:[bx+0fh],al 
       add bx,10h 
       loop s2 
       
       mov ax,0b800h
       mov ds,ax
       mov si,0
       mov di,0
       mov cx,21
       mov bx,0
ok:    push cx
       mov ax,0a0h
       mul cx
       mov di,ax
        
nf:    mov cx,0
       mov cl,es:[si]
       sub cl,20h
       jcxz s6
       mov ch,2
       mov cl,es:[si]
       mov ds:[bx+di],cx
       add si,1
       add bx,2
       jmp nf
s6:    sub bx,6


s3:    add bx,40
       mov cx,0
s4:    mov cl,es:[si]
       sub cl,20h
       inc si
       jcxz div_r
       jmp s4
       inc si
div_r: call divv
       mov cx,si
       sub cx,13
       and cx,0fh
       jcxz next
       jmp s3

next:  mov bx,0
       pop cx
       add si,3
       loop ok

      mov ax,4c00h 
       int 21h 





divv:  push cx
       push bx
       push dx
       mov dx,0
       mov cx,0
       mov cl,es:[si+2]
       sub cl,20h
       jcxz div_1          ;cx=0为字节运算,cx非0为字运算
       mov dx,es:[si+2]
div_1: mov ax,es:[si]
div_2: mov cx,10
       mov es:[si],ax
       mov ax,dx
       mov dx,0
       div cx
       push ax
       mov ax,es:[si]
       div cx
       mov cx,dx
       pop dx
       add cl,30h
       mov ch,2
       push cx
       inc bp
       mov cx,ax
       jcxz div_3
       jmp div_2
div_3: mov cx,bp
       mov bp,0
div_4: pop ds:[bx+di]
       add bx,2
   
       loop div_4

       pop dx
       pop bx
       pop cx
       ret



 

code ends 
end start
three-stone
[第3楼]   [ 回复时间:2010-12-24 17:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-21 15:56
你这代码太繁杂了。
idpanjian
[第4楼]   [ 回复时间:2010-12-26 18:13 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-03 12:08
是什么原因,造成在debug下运行正常,直接运行却异常
之前做实验10也出现过,改个方式就没问题。但是好像罗辑上没什么问题
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved