当前位置:编程学习 > 汇编语言 >>

求汇编高手~~~

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周围、求证实或名称、
下一个:治疗咽喉炎多少钱 哪个跟我说下内

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,