|
主题 : : 请问我的实验9程序哪错了,改了一个下午也没改好,显示老是不正常 [待解决] |
回复[ 17次 ]
点击[ 530次 ] | |
|
|
|
|
[帖 主] [ 发表时间:2012-03-17 23:06 ] | |
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01 |
assume cs:code
data segment
db 'welcome to masm!'
dw 3 dup (0)
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ss,ax
mov sp,16h
mov ax,0b800h
mov es,ax
mov bx,0
mov bp,0
mov si,6e0h
mov cx,16
s:push cx
mov al,ds:[bx]
mov ah,02h
mov es:[si+bp],ax
add bp,2
inc bx
loop s
s0:pop cx
push cx
mov bx,0
mov bp,0
mov al,ds:[bx]
mov ah,24h
mov es:[si+0a0h+bp],ax
add bp,2
inc bx
loop s0
s1:pop cx
mov bx,0
mov bp,0
mov al,ds:[bx]
mov ah,71h
mov es:[si+140h+bp],ax
add bp,2
inc bx
loop s1
mov ax,4c00h
int 21h
code ends
end start
编译完后运行,在屏幕中间右边只显示出'welcome'这几个字,然后就是几个小方块,第二行就只有一个绿底的小方块,第三行也是一个白底的小方块.请大大们帮下忙,我到底哪出错了,我的系统是深度技术ghostxp_sp3极速纯净版_2011.12,感激不尽!! | | |
|
|
|
|
[第9楼] [ 回复时间:2012-03-19 13:31 ] | |
荣誉值:4
信誉值:6
注册日期:2012-02-25 16:01 |
我新写的程序,显示正常了,并且代码较少
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov ax,data
mov ds,ax ;定义data段,这个也不用说了吧
mov ax,0b800h ;定义显示段
mov es,ax
mov bx,0
mov bp,0
mov si,7C0h ;以上定义好需要用的寄存器
mov cx,16
s: mov al,ds:[bx] ;放入DATA段的字节到AL
mov es:[si+bp],al
mov es:[si+0a0h+bp],al
mov es:[si+140h+bp],al
mov ah,02h ;放入颜色到AH
mov es:[si+1+bp],ah
mov ah,24h ;将第二个颜色放入AH
mov es:[si+0a1h+bp],ah
mov ah,71h ;将第三个颜色放入AH
mov es:[si+141h+bp],ah
inc bx
add bp,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这个显示成功,并且没用到栈,只用一个循环. | | |
|