ling7 发表于 2012-1-22 07:12:05

第8章实验7求助各位大大

本帖最后由 ling7 于 2012-1-29 03:04 编辑

assume cs:codesg
data segment ;段地址为ds
       db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
       db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
       db '1993','1994','1995'
;以上是表示21年的21个字符串内存地址为:0h - 53h
       dd 16,22,382,1356,2390,8000,1600,24486,50065,97479,140417,197514
       dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收入的21个dword型数据内存地址为: 54h-0A7h
       dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
       dw 11542,14430,15257,17800
;以上是表示21年公司雇员人数的21个word型数据 内存地址为: 0A8h-0D1h
data ends

table segment ;段地址为es
       db 21 dup('year summ ne ?? ') ;起始地址0 年份0 1 2 3 总收入为 5 6 7 8 人数为A B 平均收入 D E
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 bx,0
mov si,0
mov di,0
mov cx,21

s0:
mov ax,si    ;年份
mov es:di,ax
mov ax,si
mov es:di,ax

mov ax,54hsi   ;总收入
mov es:di,ax
mov ax,54hsi
mov es:di,ax

add si,4
add di,16
loop s0

;初始化si di cx

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

s1:

mov ax,0A8Hsi   ;人数
mov es:di,ax
add si,2
add di,16
loop s1

;初始化si di cx
mov si,0
mov di,0
mov cx,21

s2:
mov ax,es:si    ;平均工资
mov dx,es:si
div word ptr es:si
add ax,dx
mov es:si,ax
add si,16

loop s2
mov ax,4c00h
int 21h

codesg ends
end start


ml之后出现了 error A2206的错误
求各位大大帮我看看好吗。

nichkhun 发表于 2012-1-22 18:38:19

我也是今天才学完的这个,我给你看了下
进入CMD。然后开始MASM(因为你说ML报错,而且是A2206的问题所以我就不ML了)
然后问题出现了
由于我是新手啊,我只会这样上传,你打开看看。


我估计是因为你汇编时,开始就出现了错误

ling7 发表于 2012-1-24 02:14:12

e .我自己已经解决了。这个错误好像是数据溢出的问题。

ling7 发表于 2012-1-24 02:15:07

我把54hsi这些地址都改成了这样。。 这种形式就执行的了。 可能是语法错误吧
页: [1]
查看完整版本: 第8章实验7求助各位大大