shangyl00 发表于 2011-4-20 13:56:12

实验七,我用另外一种思路会出错,请教出错原因!

本帖最后由 shangyl00 于 2011-4-20 17:13 编辑

我的代码assume cs:codesg,ds:data,es:table,ss:stack
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

stack segment
        dw 0,0,0,0,0,0,0,0
stack ends

codesg segment
start:        mov ax,data
                mov ds,ax
                mov ax,table
                mov es,ax
                mov dx,0
                mov si,0
                mov cx,21
       
s0:                mov ax,
                mov es:,ax
                mov ax,
                mov es:,ax
                add si,16
                add bx,4
                loop s0
                mov si,0
                mov cx,21
                ;以上将年份数据放入table

s1:                mov ax,
                mov es:,ax
                mov ax,
                mov es:,ax
                add si,16
                add bx,4
                loop s1
                mov si,0
                mov cx,21
                ;以上将收入数据放入table
               
s2:                mov ax,
                mov es:,ax
                add si,16
                add bx,2
                loop s2
                mov si,0
                mov bx,0
                mov cx,21
                ;以上将雇员数放入table

s3:                mov ax,
                mov dx,
                div word ptr ds:
                mov es:,ax
                add si,16
                add bx,4
                loop s3
                ;计算人均收入
               
                mov ax,4c00h
                int 21h
codesg ends
end start        运行最后一个loop S3时会出现如下问题:求解~~

shangyl00 发表于 2011-4-20 17:05:30

我再次调试并从头到尾看了下代码,将S3循环部分更改,并用更直观结构的方式表示寻址,详细代码如下,调试通过,哈哈。。。。。。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 11542,14430,15257,17800
data ends

table segment
        db 21 dup('year summ ne ?? ')
table ends

stack segment
        dw 0,0,0,0,0,0,0,0
stack ends

codesg segment
start:        mov ax,stack
                mov ss,ax
                mov sp,10h
                mov ax,data
                mov ds,ax
                mov ax,table
                mov es,ax
                mov dx,0
                mov si,0
                mov cx,21
       
s0:                mov ax,
                mov es:,ax
                mov ax,
                mov es:,ax
                add si,16
                add bx,4
                loop s0
                mov si,0
                mov cx,21
                ;以上将年份数据放入table

s1:                mov ax,
                mov es:,ax
                mov ax,
                mov es:,ax
                add si,16
                add bx,4
                loop s1
                mov si,0
                mov cx,21
                ;以上将收入数据放入table
               
s2:                mov ax,
                mov es:,ax
                add si,16
                add bx,2
                loop s2
                mov si,0
                mov cx,21
                ;以上将雇员数放入table
s3:                mov ax,es:          ;总收入,被除数,低16位放ax
                mov dx,es:          ;总收入,被除数,高16位放dx
                div word ptr es:;做除法运算
                mov es:,ax       ;将商写到table段
                add si,16
                loop s3
                ;计算人均收入
               
                mov ax,4c00h
                int 21h
codesg ends
end start

shangyl00 发表于 2011-4-20 17:12:06

本帖最后由 shangyl00 于 2011-4-20 17:13 编辑

通过,下班了~~大家加油!
还是希望有人能告诉我,我顶楼程序为什么会除法溢出~{:5_109:} 不胜感激哈~
页: [1]
查看完整版本: 实验七,我用另外一种思路会出错,请教出错原因!