IWANT 发表于 2012-2-12 18:29:48

求救!!汇编 实验7,只需您帮忙运行下

assume cs:codesg,ds:data,es:table
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,590821,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 sunm ne ?? ')
table ends
codesg segment
start:mov ax,data
      mov ds,ax
mov ax,table
mov es,ax

mov bx,0
mov si,0
mov di,0
mov cx,21

    s:mov al,
   mov es:,al
mov al,
mov es:,al
mov al,
mov es:,al
mov al,
mov es:,al

mov ax,54h
mov es:5h,ax
mov bx,56h
mov es:7h,bx

mov ax,0a8h
mov es:0ah,ax

mov ax,54h
mov dx,56h
div word ptr es:0ah
mov es:0dh,ax

add bx,4
add si,2
add di,16
loop s

mov ax,4c00h
int 21h
codesg ends
end start

本人已经崩溃了,破64位的机子,我已经不知道是代码错了还是机子的原因了。编译可以通过,但link时生不成exe文件。麻烦谁能帮我编译运行下试试,,我觉得代码应该没错啊。万分感谢!







莫名其妙 发表于 2012-2-12 18:50:30

本帖最后由 莫名其妙 于 2012-2-12 19:04 编辑

Divide overflow    link 后的提示我百度了下貌似是除法什么的溢出错误 你在研究下我也是新手 没注释的情况下我还看不明白人家的思路所以帮不上!~


昨天才看到DIV那一章   估计是不是 DIV 那段出的问题? 我看上面那一堆mov 都没啥    就是下面的 dx ax 那部分在研究研究

▓纸嗳祢一个▓ 发表于 2012-2-12 19:01:40

根本不知道是什么,只是路过。刚来学习的。。

IWANT 发表于 2012-2-14 00:33:11

嗯,谢谢!我再看看

Zero_One 发表于 2012-2-14 08:25:46

本帖最后由 Zero_One 于 2012-2-14 10:40 编辑

assume cs:codesg,ds:data,es:table
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,590821,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 sunm ne ?? ')
table ends
codesg segment
start:mov ax,data
         mov ds,ax
   mov ax,table
   mov es,ax
   
   mov bx,0
   mov si,0
   mov di,0
   mov cx,21
   
   s:mov al,
      mov es:,al
   mov al,
   mov es:,al
   mov al,
   mov es:,al
   mov al,
   mov es:,al
   
   mov ax,54h
   mov es:5h,ax
   mov bx,56h                这里也错,不能使用BX当做暂时寄存器,改为AX   MOV AX,56H
   mov es:7h,bx                                                                                    MOV ES:7H,AX
   
   mov ax,0a8h
   mov es:0ah,ax
   
   mov ax,54h                  
   mov dx,56h                                    
   div word ptr es:0ah       这里好像应该是DI   DIV WORD PTR ES:0AH
   mov es:0dh,ax

   add bx,4
   add si,2
   add di,16
   loop s
   
   mov ax,4c00h
   int 21h
codesg ends
end start
      刚才运行了下,一切正常,就上面两条错误

祭~魔鬼洛特巴尔 发表于 2012-2-15 07:56:47

晕了,等待小白!!!~~~

IWANT 发表于 2012-2-23 20:53:52

谢谢五楼大哥!

认真 发表于 2012-2-23 21:05:26

assume cs:code,ds:data,es:table
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 11452,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 bx,0
      mov si,0
           mov cx,21
s:          mov ax,
          mov es:,ax
       
          mov ax,
          mov es:,ax
       
          mov ax,
          mov es:,ax
       
          add si,2
          mov ax,
          mov es:,ax
       
          mov ax,
          mov es:,ax
       
          mov ax,es:
          mov dx,es:
          div word ptr es:
          mov es:,ax
       
           add bx,16
           add si,2
           loop s
       
           mov ax,4c00h
           int 21h
code ends
end start帮我看看我的可以不,我网吧不行。不过我觉得你那个好多错的
页: [1]
查看完整版本: 求救!!汇编 实验7,只需您帮忙运行下