|
主题 : : 第八章的实验7,出了点错 [已解决] |
回复[ 9次 ]
点击[ 530次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-12-05 12:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-11-30 20:32 |
assume cs:codesg
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,2248,2793,4037,5635,8226
dw 11542,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 bp,0
mov si,0
mov di,0
mov cx,21
s:
mov al,[bx+si]
mov es:[bp],al
mov al,[bx+si+1]
mov es:[bp+1],al
mov al,[bx+si+2]
mov es:[bp+2],al
mov al,[bx+si+3]
mov es:[bp+3],al
;以上移入年份
add si,54h ;进入总收入
mov dx,[bx+si]
mov es:[bp+5],dx
mov dx,[bx+si+2]
mov es:[bp+7],dx
add bx,4
mov si,0
add bp,10h
loop s
mov bp,0
mov bx,0
mov si,0
mov cx,21
s2:
mov ax,[bx+a8h] ;放入人数,这句编译时报错:undefined symbol a8h
mov es:[bp+ah],ax ;这句报错:invalid use of register
add bx,2
add bp,10h
loop s2
add si,54h
mov bp,0
mov cx,21
s3:
mov ax,[bx+si]
mov dx,[bx+si+2]
mov si,a8h ;还是a8h未定义
div [bx+si] ;除以人数,这句编译时报错:instruction operand must have size
mov [bp+dh],ax ;还是invalid use of register
mov si,0
add bx,4
loop s3
mov ax,4c00h
int 21h
codesg ends
end start
编译时报错,求大神解决 | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-12-05 21:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-12-05 21:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第3楼]
[ 回复时间:2011-12-06 11:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-11-30 20:32 |
回复:[第2楼]
------------------
那其他的错误呢? | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-12-06 19:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第5楼]
[ 回复时间:2011-12-07 10:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-11-30 20:32 |
回复:[第4楼]
------------------
assume cs:codesg
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,2248,2793,4037,5635,8226
dw 11542,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 bp,0
mov si,0
mov di,0
mov cx,21
s:
mov al,[bx+si]
mov es:[bp],al
mov al,[bx+si+1]
mov es:[bp+1],al
mov al,[bx+si+2]
mov es:[bp+2],al
mov al,[bx+si+3]
mov es:[bp+3],al
;以上移入年份
add si,54h ;进入总收入
mov dx,[bx+si]
mov es:[bp+5],dx
mov dx,[bx+si+2]
mov es:[bp+7],dx
add bx,4
mov si,0
add bp,10h
loop s
mov bp,0
mov bx,0
mov si,0
mov cx,21
s2:
mov ax,[bx+0a8h]
mov es:[bp+ah],ax ;这句报错:invalid use of register
add bx,2
add bp,10h
loop s2
add si,54h
mov bp,0
mov cx,21
s3:
mov ax,[bx+si]
mov dx,[bx+si+2]
mov si,0a8h
div [bx+si] ;除以人数,这句编译时报错:instruction operand must have size
mov [bp+dh],ax ;还是invalid use of register
mov si,0
add bx,4
loop s3
mov ax,4c00h
int 21h
codesg ends
end start
D:\RadASM\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"D:\RadASM\Masm32\Include" "F:\masm5\proj\8.asm"
Assembling: F:\masm5\proj\8.asm
F:\masm5\proj\8.asm(70) : error A2023: instruction operand must have size
F:\masm5\proj\8.asm(58) : error A2032: invalid use of register
F:\masm5\proj\8.asm(71) : error A2032: invalid use of register
F:\masm5\proj\8.asm(20) : error A2004: symbol type conflict
F:\masm5\proj\8.asm(22) : error A2004: symbol type conflict
F:\masm5\proj\8.asm(83) : warning A4023: with /coff switch, leading underscore required for start address : start
构建时发生错误.
总共编译时间 187 毫秒 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-12-07 10:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-11-30 20:32 |
|
|
|
|
|
[第7楼]
[ 回复时间:2011-12-07 11:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-11-30 20:32 |
回复:[第4楼]
------------------
我改了下,你再看看
assume cs:codesg
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,2248,2793,4037,5635,8226
dw 11542,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 bp,0
mov si,0
mov di,0
mov cx,21
s:
mov al,[bx+si]
mov es:[bp],al
mov al,[bx+si+1]
mov es:[bp+1],al
mov al,[bx+si+2]
mov es:[bp+2],al
mov al,[bx+si+3]
mov es:[bp+3],al
;以上移入年份
add si,54h ;进入总收入
mov dx,[bx+si]
mov es:[bp+5],dx
mov dx,[bx+si+2]
mov es:[bp+7],dx
add bx,4
mov si,0
add bp,10h
loop s
mov bp,0
mov bx,0
mov si,0
mov cx,21
s2:
mov ax,[bx+0a8h] ;放入人数
mov es:[bp+0ah],ax
add bx,2
add bp,10h
loop s2
add si,54h
mov bp,0
mov cx,21
s3:
mov ax,[bx+si]
mov dx,[bx+si+2]
mov si,0a8h
div [bx+si] ;除以人数 这句编译时报错:instruction operand must have size
mov [bp+0dh],ax
mov si,0
add bx,4
loop s3
mov ax,4c00h
int 21h
codesg ends
end start
D:\RadASM\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"D:\RadASM\Masm32\Include" "F:\masm5\proj\8.asm"
Assembling: F:\masm5\proj\8.asm
F:\masm5\proj\8.asm(71) : error A2023: instruction operand must have size
F:\masm5\proj\8.asm(21) : error A2004: symbol type conflict
F:\masm5\proj\8.asm(23) : error A2004: symbol type conflict
F:\masm5\proj\8.asm(84) : warning A4023: with /coff switch, leading underscore required for start address : start
构建时发生错误.
总共编译时间 47 毫秒 | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-12-08 08:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
div [bx+si]这个需要加上byte ptr或者word ptr,也就是需要指出操作内存单元的大小。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2011-12-08 20:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-11-30 20:32 |
此贴由 贴主 于 [ 2011-12-08 20:56 ] 结贴。 结贴原因:问题已解决 | | |
|