|
主题 : : 实验9 求救 [待解决] |
回复[ 6次 ]
点击[ 614次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2007-11-26 17:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-29 20:49 |
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ss,0b800h
mov bp,0870
mov bx,0
mov cx,16
s:mov ax,[bx]
mov [bp],ax
mov byte ptr [bp+1],02h
inc bx
add bp,2
loop s
mov ax,4c00h
int 21h
code ends
end start
我觉得我写的程序没有错,但连接和编译不过去,请高手指教 | | |
|
|
|
|
[第1楼]
[ 回复时间:2007-11-26 20:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42 |
编译过不去就说明指令格式不正确。这个是写程序的基础,必须保证的。从头看书吧,知识不能马虎!
1)
mov ss,0b800h ==》段寄存器不能直接放入数据必须用其他通用寄存器来转一下:mov ax,0B800H mov ss,ax
2)
mov ax,[bx]
mov [bp],ax
应该为
mov al,[bx]
mov [bp],al
你定义的数据是db型的,你一次只取一个数据,你得用一个8位的寄存器,你用16位的会一次取一个dw型,那你的程序结果绝对不会正确。
3)
bp使用是和ss配套,但是,你要知到ss是栈的段地址,你轻易的使用做一个数据地址,容易造成错误。建议使用其他的,例如es,在寻址的时候在显示的给出段地址es,如es:[bp].我觉得使用默认值不是不可以,但是,不是一个好的编程习惯。式代码的可读性降低。个人不建议使用默认的形式,省略了打两个字母的时间,可能造成你更长时间的困惑。
建议楼主将知识学的扎实一点。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2007-11-26 20:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-29 20:49 |
谢谢,我以后会认真并把知识学的扎实一些,谢谢您的建议 | | |
|
|
|
|
[第3楼]
[ 回复时间:2007-11-26 21:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-29 20:49 |
实验9我已编译通过,但我觉得它好象有点繁锁,请高手看一看
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bp,06e0h
mov bx,0
mov cx,16
s0:mov al,[bx]
mov es:[bp],al
mov byte ptr es:[bp+1],02h
inc bx
add bp,2
loop s0
mov bp,0780h
mov bx,0
mov cx,16
s1:mov al,[bx]
mov es:[bp],al
mov byte ptr es:[bp+1],24h
inc bx
add bp,2
loop s1
mov bp,0820h
mov bx,0
mov cx,16
s2:mov al,[bx]
mov es:[bp],al
mov byte ptr es:[bp+1],71h
inc bx
add bp,2
loop s2
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第4楼]
[ 回复时间:2007-11-29 17:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:19
信誉值:0
注册日期:2007-07-05 17:25 |
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,160*12+36*2
mov si,0
mov cx,16
s: mov al,[si]
mov es:[bx],al
mov byte ptr es:[bx+1],11000010b
mov es:[bx+160],al
mov byte ptr es:[bx+160+1],00000010b
mov es:[bx+160*2],al
mov byte ptr es:[bx+160*2+1],00000001b
add bx,2
inc si
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-02-08 01:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-01-30 19:09 |
assume cs:code
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
sub di,di
sub si,si
sub ax,ax
mov cx,16
s0:mov al,[si]
mov es:[720h+di+0],al
mov es:[720h+di+160],al
mov es:[720h+di+320],al
inc si
add di,2
loop s0
mov si,16
mov di,1
mov cx,16
s1:mov al,[si+0]
mov es:[720h+di+0],al
mov al,[si+1]
mov es:[720h+di+160],al
mov al,[si+2]
mov es:[720h+di+320],al
add di,2
loop s1
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-03-08 17:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-05 16:09 |
assume cs:codes, ds:datas
datas segment
db 'welcome to masm!'
datas ends
codes segment
start: mov ax,datas
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,160*12
mov si,0040h
mov di,0
mov cx,16
s: mov al,ds:[di]
mov byte ptr es:[bx+si],al
mov byte ptr es:[bx+si+1],11000010b
add si,2
inc di
loop s
mov ax,4c00h
int 21h
codes ends
end star | | |
|