王爽【汇编语言】第9章实验9 有点不懂请教大家
我检查了很多遍代码可是感觉不知道错哪在屏幕上就一次显示出3个'welcome to masm!' 后来打开就没出现过请教下是为什么?assume cs:codesg
data segment
db 'welcome to masm!'
data ends
codesg segment
start:mov ax,0b800h
mov ds,ax ;使ds对准显存缓冲区段
mov ax,data
mov es,ax ;使es对准data段
mov bx,640h ;640h表示在显示缓冲区的第10行的偏移
sub si,si ;si清零
sub di,di ;di清零
mov ah,02h ;将绿色字体的偏移放入ax的高8位
mov cx,16 ;cx=16表示loop循环16次
s0: mov al,es: ;data段中的字符放入ax的低8位
mov ,ax ;64表示第64列di表示相对的偏移从0开始增加直到15
inc si ;si每次加1 以便取出data中的数据
add di,2 ;di每次加2 以便将AX中的数据每次以2字节写入显存缓冲区
loop s0
add bx,0a0H ;bx加上a0h表示向下一行下数据
sub si,si
sub di,di
mov ah,24h ;将绿底红色的字体属性放入ax的高八位
mov cx,16
s1: mov al,es:
mov ,ax
inc si
add di,2
loop s1
add bx,0a0H
sub si,si
sub di,di
mov ah,71h ;将白底蓝色的字体属性放入ax的高八位
mov cx,16
s2: mov al,es:
mov ,ax
inc si
add di,2
loop s2
codesg ends
end start
楼主最好在codesg ends上面加上mov ax, 4c00h,int 21h,其他就没有什么错误了。还有要看在屏幕上显示的东西时最好用emu8086,别用系统自带的cmd。 少个中断指令,还有楼主最好把要复制的数据放在ds段,配合movsb指令 cfer 发表于 2011-12-3 20:22 static/image/common/back.gif
楼主最好在codesg ends上面加上mov ax, 4c00h,int 21h,其他就没有什么错误了。还有要看在屏幕上显示的东西 ...
谢谢这个确实忘写了还是太粗心啊 api 发表于 2011-12-3 20:35 static/image/common/back.gif
少个中断指令,还有楼主最好把要复制的数据放在ds段,配合movsb指令
额多些提醒不过中断什么的还没学。。 本帖最后由 zzmatrix 于 2011-12-3 22:35 编辑
因为系统的cmd不是纯dos系统,如果你坚持用cmd的话,建议你按alt+enter把它全屏化了运行。试试。
页:
[1]