|
主题 : : 实验题7——自己做的,感觉没问题,但编译不了! [待解决] |
回复[ 9次 ]
点击[ 410次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-05-03 17:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-23 15:57 |
assume ds:data,ss:table,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 me ?? ')
table ends
code segment
start:mov ax,data
mov ds,ax
mov bx,80
mov cx,21
mov si,84
mov di,' '
mov sp,80
mov ax,table
mov ss,ax
mov sp,150h
S:push [bx]
push [bx+2]
push di
mov ax,[bx+si]
mov dx,[bx+si+2]
push dx
push ax
push di
push [sp+si+84]
push di
div word ptr [bx+si+84]
push ax
push di
sub bx,4
sub sp,2
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-06-30 09:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-04 17:53 |
你的程序太乱了! 应学学别人的写法! 大家才好帮你! | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-06-30 10:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-25 22:09 |
还有,编译不了,提示什么错误呢,发出来,大家才好帮你查找问题啊。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-07-01 10:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
|
|
|
|
|
[第4楼]
[ 回复时间:2010-07-15 18:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2008-06-04 16:24 |
|
|
|
|
|
[第5楼]
[ 回复时间:2010-07-15 22:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
push [sp+si+84] ; 如果把sp作为偏移地址出现, 那么隐含的段是SS段, 如果要用DS的话,就需要显式的指明,比如:DS:[sp] | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-08-18 11:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-15 01:32 |
我这样写的
编译 结果都没问题
;---------------计算平均值---------------------------
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 ??.?? ')
table ends
;---------------栈段---------------------------------
stack segment
dw 16 dup(0)
stack ends
code segment
;---------------变量初始化--------------------------
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov bx,0
mov si,4
mov di,8
mov cx,21
;---------------被除数初始化------------------------
s0: mov ax,[si+50h]
mov dx,[si+52h]
add si,4
;---------------暂存bx的值,bx存储除数---------------
push bx
mov bx,[di+0a0h]
add di,2
div bx
;---------------暂存ax的值,设置ds-------------------
push ax
mov ax,table
mov ds,ax
;---------------恢复ax,bx的值,写内存----------------
pop ax
pop bx
mov ds:[bx+10],ax
mov ds:[bx+13],dx
;---------------还原变量----------------------------
add bx,10h
mov ax,data
mov ds,ax
loop s0
mov ax,4c00h
int 21h
code ends
end start
希望能帮助你 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-08-24 18:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:1
注册日期:2010-07-09 15:30 |
看看8.1章!!只有4个寄存器才能在[...]中使用!! | | |
|
|
|
|
[第8楼]
[ 回复时间:2010-08-24 18:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:1
注册日期:2010-07-09 15:30 |
|
|
|
|
|
[第9楼]
[ 回复时间:2010-10-02 14:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-25 13:01 |
push [sp+si+84] 中的[sp+si+84] 是错的 不存在这种写法 | | |
|