|
主题 : : 实验9 请高手指点,谢谢 [待解决] |
回复[ 3次 ]
点击[ 254次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-06-04 20:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-03 19:44 |
assume cs:codesg ds:datasg ;在屏幕中间分别显示绿色(02H),绿底红色(24H)
datasg segment ;白底蓝色(71H)的字符串'welcome to masm!'
db 'welcome to masm!' ;16个字,32个字节
datasg ends
codesg segment
start:
mov ax,codesg
mov cs,ax ;程序段与cs相联
mov ax,0b8000h
mov es,ax ;附加段地址为0b8000H:0
mov ax,datasg
mov ds,ax
mov bx,0 ;数据段
mov si,0
;80*25模式一共有80列160个字节,要显示16个字符,所以从第64列开始(ES:[di])才是显示屏的正中位置
;正中间, 25/2=12.5 第12行, 80*0.5=40 也就是第12行40列为正中间. 40列为80字节处,在此处左右各存放16个字节
mov cx,16
s:
mov al,ds:[bx]
mov ah,02h ;es段中的第11行
mov es:[6e0h+64+si],ax
mov ah,24h
mov es:[780h+64+si],ax ;es段中的第12行
mov ah,71h
mov es:[820h+64+si],ax ;es段中的第13行
inc bx
add si,2
loop s
mov ax,4c00h
inc 21h
codesg ends
end start
编译时不能通过,请各位指点,谢谢 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-06-04 20:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-03 19:44 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-06-05 13:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-05 12:48 |
error A2004: symbol type conflict
error A2004: symbol type conflict
warning A4023: with /coff switch, leading underscore required for start address : start
assume cs:codesg,es:datasg (少逗号) 还有一个分号要改
剩下的不知道了,编译出现以上错误提示 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-06-07 19:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-03 19:44 |
谢谢2楼的提示,标号加上后,还有两个地方错误
第1点错误
mov ax,codesg
mov cs,ax ;程序段与cs相联
要把这两行删去,我不是太清楚,请各位高手讲解
第2点错误
mov ax,0b8000h
mov es,ax ;附加段地址为
mov ax,0b8000h 应该为 mov ax,0b800h .因为我们传送到ES里面是一个段地址.段地址*16就是我们需要的物理地址 0b8000h | | |
|