|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 莫名其妙 于 2012-3-2 08:45 编辑
assume cs:code
data segment
db "welcome to masm !",0
data ends
code segment
start: mov ax,cs
mov ds,ax
mov si, offset c7
mov ax,0
mov es,ax
mov di,200h
mov cx,offset c7end - offset c7
cld
rep movsb
;安装
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0h
;设置向量表
mov dh,10
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
int 7ch
;执行中断 pushf push cs push ip
mov ax,4c00h
int 21h
c7: push ax
push bx
push di
mov bx,0b800h
mov es,bx
mov al,160d
mul dh
mov di,ax
mov al,2
mul dl
add di,ax ;设定显示位置
s: mov cl,[si]
mov ch,0
jcxz ok ;判断是否为0 跳转
mov es:[di],cl
mov bl,2
mov es:[di+1],bl
inc si
add di,2
jmp short s ;显示输出
ok: pop di
pop bx
pop ax
iret
c7end: nop
code ends
end start
我在debug 调试的时候 发现mov bx,0b800h----jmp short s 这一段 本来应该修改显示区域的内存单元数据的 可是改写完的那一段却没有发生改变 还是原来的数据!~
这个程序 每次运行都不会显示出 绿色的字符
但是只要 debug一遍 在退出 然后在直接执行 .exe就能正确显示
E:\>cd 1
E:\1>ml 1.asm
E:\1>1.exe
E:\1>1.exe
E:\1>1.exe 这里多次执行也没有显示出字符串
E:\1>debug 1.exe 进入debug 后直接q退出
-q
welcome to masm !
E:\1>1.exe 再次执行就显示出字符串了!~
E:\1>
求解!~
|
|