求汇编高手~~~
Key_rom equ 16h
esc1 equ 1bh
ged equ 33dfh
Video segment at 0b800h
Wd_buff label word
V_buff db 25*80*2 dup(?)
Video ends
Pro_nam segment
Main proc far
Assume cs:pro_nam,es:video
Start:
Push ds
Sub ax,ax
Push ax
Mov ax,video
Mov es,ax
Mov cx,80*25
Mov bx,0
clear:
Mov es:[wd_buff+bx],1100h
Inc bx
Inc bx
Loop clear
stark:
Mov bx,170
jia:
Add bx,160
Cmp bx,2890
Jz stark
Jmp delay
display:
Pop bx
Mov es:[bx], ged
Mov es:[bx-4], ged
Mov es:[bx-2], ged
Mov es:[bx+2], ged
Mov es:[bx-160], 1100h
Mov es:[bx-4-160], 1100h
Mov es:[bx-2-160], 1100h
Mov es:[bx+2-160], 1100h
Cmp es:[bx+160],ged
Jz stark
Jmp jia
delay:
Push bx
Mov bx,0
lop:
Mov cx,9fffh
lop1:
; mov ah,0
; int Key_rom
; cmp al,esc1
; jz exit
loop lop1
back:
Inc bx
Cmp bx,1fffh
Jnz lop
Jmp display
Exit:
Ret
Main endp
Pro_nam ends
End start
本人初学汇编,写了一程序,但到了Lop1下面四句时总是运行不成功,为什么呢,求高手解救
追问:因为不屏蔽就不能运行了,一按上ESC就弹出个框,所以就想知道为什么会这样就在DOS系统环境下,用EDIT编辑
答案:1、这个程序没有太大问题。
2、 只是退出时不要使用Ret,换成
MOV AH,4CH
INT 21H
即可。
3、Ret语句只有在.com文件应用,前提是程序段前缀psp未被修改,且堆栈保持平衡状态,执行ret指令后要确保执行int 20h才行。
4、用masm5.0编译你的程序,它把Ret(0c3h)指令编译成retf(0cfh),这是编译器本身错误。
其他:前面加“;”了,屏蔽了? 时什么编译器
上一个:一种输入法、按一个拼音比如:Y 。所有关联的比如:E、U、I等会围在Y周围、求证实或名称、
下一个:治疗咽喉炎多少钱 哪个跟我说下内