
mov ax,4c00h int 21h 汇编结束必须加这两句话吗?有什么意思?是定值吗? 请高手解释下,谢谢
汇编结束不一定要带这两句,【mov ax,4c00h int 21h】是DOS系统功能调INT 21H功能中的一种,表示带返回码结束用户程序。【mov ax,4c00h int 21h】不是定值,也可写成【mov AH,4ch int 21h】。
int 21H指令中,寄存器AX,分为AH和AL,AH中存入指令码4C表示带返回码结束,AL=返回码。
DOS系统功能调INT 21H常用功能:
AH、功能、调用参数、返回参数
1、AH存入00,功能:程序终止(同INT 20H),调用参数:CS=程序段前缀。
2、AH存入01,功能:键盘输入并回显,调用参数:AL=输入字符。
3、AH存入02,功能:显示输出,调用参数:DL=输出字符。
4、AH存入03,功能:异步通迅输入,调用参数:AL=输入数据。
5、AH存入04,功能:异步通迅输出,调用参数:DL=输出数据
扩展资料:
程序转移指令:
1、无条件转移指令 (长转移):
JMP 无条件转移指令、CALL 过程调用、RET/RETF过程返回
2、条件转移指令 (短转移,-128到+127的距离内):
( 当且仅当(SF XOR OF)=1时,OP1<OP2 )、JA/JNBE 大于转移、JAE/JNB 大于或等于转移、JB/JNAE 小于转移、JBE/JNA 小于或等于转移。测试无符号整数运算的结果(标志C和Z)。
JG/JNLE 大于转移、JGE/JNL 大于或等于转移、JL/JNGE 小于转移、JLE/JNG 小于或等于转移。测试带符号整数运算的结果(标志S,O和Z).
JE/JZ 等于转移、JNE/JNZ 不等于时转移、JC 有进位时转移、JNC 无进位时转移、JNO 不溢出时转移、JNP/JPO 奇偶性为奇数时转移、JNS 符号位为 "0" 时转移、JO 溢出转移、JP/JPE 奇偶性为偶数时转移、JS 符号位为 "1" 时转移。
3、循环控制指令(短转移):
LOOP CX不为零时循环、LOOPE/LOOPZ CX不为零且标志Z=1时循环、LOOPNE/LOOPNZ CX不为零且标志Z=0时循环、JCXZ CX为零时转移、JECXZ ECX为零时转移.
4、中断指令:
INT 中断指令、INTO 溢出中断、IRET 中断返回
参考资料来源:百度百科-汇编指令
参考资料来源:百度百科-中断指令
一,是用int 20h 来终止程序,但有条件,在结束时cs必须跟程序开始时一致,否则要死机。在DOS中常用于*.com文件。
二,是用ret来终止程序,如下:
...
code segment
start proc far ;注意,这里有 far,表示是远调用,主要影响ret指令,编译后为RETF
push cs
mov ax,0
push ax
......
...... ;应用户程序
......
ret ;返回DOS
start endp
ends
end start
应用这种退出机制,千万注意堆栈一个都不能错,否则死机。在DOS中常用于*.exe文件。
三,就是你提到的
mov ax,4c00h
int 21h
用它返回是不需任何条件,还可顺便帮你关闭你打开后忘记关闭的文件。并返回寄存器al的值。在DOS中可用于*.com或*.exe文件。
具体来说:
DOS系统提供给用户很多应用,比如文件读写、时间读写,显示等等。int 21h是DOS系统的系统调用的入口,ah为功能号,就是本问题中的4c,比如
mov ah,9
mov dl,‘a'
int 21h
表示要在屏幕上显示英文字母a
本问题中mov ax,4c00h表明应用程序要退出,并为调用本程序的程序返回00,传递退出信息。
ax取值范围是4c00h---4cffh。
当调用中断的时候,需要指明调用哪个重点,21H是这个意思,int是调用中断程序21H;
ah放置中断程序的子程序编号,al放置传给他的值。4c子程序用于函数的返回,al放置返回值。
表示结束程序, 返回dos