鱼C论坛

 找回密码
 立即注册
查看: 2654|回复: 4

[汇编作业] 王爽汇编第二版第8章实验7------debug做除法时溢出问题

[复制链接]
发表于 2014-5-23 20:00:55 | 显示全部楼层 |阅读模式
2鱼币
做到cx=6时就溢出,debug不下去了!求高手解答啊~~~

代码:

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,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


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

   s0: mov ax,[bx]                     ;将年份按格式放入表格中
       mov es:[si],ax
       mov ax,2[bx]
       mov es:2[si],ax



       mov ax,ds:53h[bx]              ;将收入按格式放入表格中
       mov es:7h[si],ax                  ;这里答案是   mov es:5h[si],ax,个人认为我的代码是正确的
       mov dx,ds:55h[bx]
       mov es:5h[si],dx                 ;这里答案是   mov es:7h[si],ax,个人认为我的代码是正确的


       div word ptr ds:0a7h[di]    ;将平均收入按格式放入表格中
       mov es:0dh[si],ax

       mov ax,ds:0a7h[di]            ;将人数按格式放入表格中
       mov es:0ah[si],ax

       add bx,4     
       add di,2
       add si,10h

       loop s0  



       mov ax,4c00h
       int 21h

codesg ends

end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-23 20:16:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-23 20:36:47 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-26 14:01:06 | 显示全部楼层
本帖最后由 kikiatw 于 2014-5-26 14:05 编辑

mov ax,ds:53h[bx]   ;将收入按格式放入表格中
這裡應該是 52H不是53H 你算數有問題, 00-81 共82個空間是放年的

mov es:7h[si],ax      ;这里答案是   mov es:5h[si],ax,个人认为我的代码是正确的
這裡應該是 5H, 在data segment 高位放高位, 在es segment 也是高位放高位, 幹嘛反過來?

mov dx,ds:55h[bx] 上面定址錯了, 下面跟著錯
mov es:5h[si],dx     上面高低位錯了, 這裡跟著錯


div word ptr ds:0a7h[di]    ;将平均收入按格式放入表格中 a8h才對

後面不解釋了, 我覺得你前面幾章基礎很薄弱, 我在這裡點醒你吧
1. 假設 SS 定義10h個空間, 那棧頂在哪?
棧頂就在10h, 為什麼呢? 因為堆疊是從 SS:00H ~ SS:0FH 共16個, SS:10H 是第17個也就是棧頂
這樣你看出你的問題在哪了嗎?
你的問題是在於把"數量" 跟內存的起始點搞混了, 內存是 0~~開始放的, 數量是 1 開始數的

2. 假設一個DD 雙字組的型態, 存放在一個內存中, 是怎麼儲存的呢?
舉個例子就用5937000 來當例子好了, 5937000 = 5A9768H
5A9768H 存放在內存中你要把他從低位元四個開始割開, 就是 5AH 與 9768H
依照高位元存放在高記憶體, 低位元存放在低記憶體的原則就是
68,97,5A,00 這樣存放

你把這個數字從 DS 搬移到 ES,
那肯定也是 6897 --> 6897 , 5A00 -->5A00 這種方式, 把他對調就不倫不類了
最後, 請給分, 謝謝!!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-11 11:21:12 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 14:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表