不好意思
mov ax,4c00H
int 21H
忘写了
mov es:[bx+0110H],dx 我是用0110定位到第13行,而用bx来定位列;
我这个程序只是用了一下caH这种表示字符的属性来试探一下该程序能否正常运行。
而且,我把我的这个试探程序改简单了一些
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 cx,16
mov bx,0
mov si,0
mov dh,0caH
s:mov dl,[si] (把属性caH放到DH中,把字符的ASCII码放到DL中)
mov es:[bx],dx (把DX中的内容,高位字节caH,低位字节ASCII码放入B800:0000开始的内存空间 中)
inc si
add bx,2
loop s
mov ax,4c00H
int 21H
code ends
end start
改成这样后还是不能正常运行,如果在DOS下直接运行EXE文件,则DOS会被直接关闭掉,也不会弹出“NTVDM CPU遇到无效指令的对话框”,用DEBUG进行跟踪,同样会看不到DX中的值被送入到B800:0000开始的内存空间中。
这可能与三楼说的屏幕在变化有关吧,但是我觉得这个程序应该是没问题,咋就不能运行呢? |