|
主题 : : 实验7问题~请多多帮忙一下! [待解决] |
回复[ 3次 ]
点击[ 290次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-11-11 17:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-13 16:24 |
请大家帮我看看我用ASM编译不出来.请问是不是我的语法有问题还是有别的问题.
请指点一下.谢谢!
assume cs:coesg,ds:table,ss:abc,es:data
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
abc segment
dw 8 dup (0)
abc ends
table semgent
dw 21 dup (0,0,0,0,0,0,0,0)
table ends
coesg segment
start mov ax,data ;---------------------------------
mov es,ax
mov ax,abc
mov ss,ax
mov sp,16
mov ax,table
mov ds,ax
mov si,0
mov di,0
mov bx,0
mov ax,0
mov cx,21 ;---------------------------------
s1:mov push cx
mov cx,2
s:mov ax,es:[si]
add si,2
mov [bx+di],ax
add di,2
loop s
mov di,0
add bx,16
pop cx ;把年份写入table(DS)
loop s1 ;----------------------------------
mov bx,0
mov cx,21 ;---------------------------------
s2:push cx
mov cx,2
s3:mov ax,es:[si]
add si,2
mov [bx+di+5],ax
add di,2
loop s3
mov di,0
add bx,16
pop cx ;把收入写入table(DS)
loop s2 ;----------------------------------
mov bx,0
mov cx,21
s4:mov ax,es:[si]
add si,2
mov [bx+di+10],ax
add bx,16 ;把雇员写入table(DS)
loop s4 ;----------------------------------
mov bx,0
mov si,5
mov di,10
mov cx,21
s5:mov ax,[bx+si]
mov dx,[bx+si+2]
div word ptr [bx+di]
mov ax,[bx+di+2]
add bx,16 ;把人均收入计算后写入table(DS)
loop s5 ;----------------------------------
mov ax,4c00h
int 21
coesg ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-11-11 18:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:14
注册日期:2008-08-20 11:21 |
看了下语法,有几个小错误:
1.data segment后面忘了写 data ends
2. s1:mov push cx 这个应该写成 s1:push cx 吧?
3. 最后int 21 应该写成int 21H | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-11-12 10:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-11-13 16:24 |
看了下语法,有几个小错误:
1.data segment后面忘了写 data ends
2. s1:mov push cx 这个应该写成 s1:push cx 吧?
3. 最后int 21 应该写成int 21H
4.start mov ax,data这里start没加:
请大家再帮帮忙看看~谢谢
还是不行下边的是我刚刚检查过的还是编译不出来.
请问汇编有像VB一样的语法错误的提示工具的吗?
assume cs:coesg,ds:table,ss:abc,es:data
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
abc segment
dw 8 dup (0)
abc ends
table semgent
dw 21 dup (0,0,0,0,0,0,0,0)
table ends
coesg segment
start: mov ax,data
mov es,ax
mov ax,abc
mov ss,ax
mov sp,16
mov ax,table
mov ds,ax
mov si,0
mov di,0
mov bx,0
mov ax,0
mov cx,21
s1: push cx
mov cx,2
s: mov ax,es:[si]
add si,2
mov [bx+di],ax
add di,2
loop s
mov di,0
add bx,16
pop cx
loop s1
mov bx,0
mov cx,21
s2: push cx
mov cx,2
s3: mov ax,es:[si]
add si,2
mov [bx+di+5],ax
add di,2
loop s3
mov di,0
add bx,16
pop cx
loop s2
mov bx,0
mov cx,21
s4: mov ax,es:[si]
add si,2
mov [bx+di+10],ax
add bx,16
loop s4
mov bx,0
mov si,5
mov di,10
mov cx,21
s5: mov ax,[bx+si]
mov dx,[bx+si+2]
div word ptr [bx+di]
mov ax,[bx+di+2]
add bx,16
loop s5
mov ax,4c00h
int 21h
coesg ends
end start | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-11-12 15:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2008-10-30 16:26 |
数据写的太杂,注释下方便别人看,MASM是有错误提示的,提示在哪一行...
======================================================================================
汇编学习群:47647963 | | |
|