大多数汇编代码都由以下指令终止
MOV AH, 4CH
INT 21H
"MOV AH,4CH“是什么意思?
发布于 2017-03-03 16:22:03
DOS中断int 21/4Ch是带有返回码的EXIT - TERMINATE,以al
的内容作为返回码,进程终止。文档附带以下说明:
除非进程是它自己的父进程(参见AH=26h上的#01378
16h ),否则所有打开的文件都会关闭,属于该进程的所有内存都会被释放。在调用此函数
之前,应删除所有网络文件锁定
发布于 2019-08-18 20:48:59
MOV
代码是这样工作的:MOV Value1,Value2
。
它将Value2
放入Value1
中。但是你不能在内存中从一个变量移动到另一个变量。您可以像这样使用此代码:
您编写的这段代码将4c
十六进制(=76十进制)放入ah
寄存器。你问我们为什么要这么做?当我们使用中断时,我们总是必须把一些数字(函数的编号)放入一个寄存器中。
在ah=4ch int 21h
上,程序将终止对操作系统的控制。(结束程序)并且int 21h
是dos interrupt.Example:
ah=9h , dx=offset (string + '$') ,int 21h
。将字符串写入光标位置。
ah=6h
,ch
=开始行,cl
=开始列,dh
=结束行,dl
=结束列,al
=行数,bh
=属性,int 10h
清除定义的区域并在其中写入属性。
ah=2h , dh=row,dl=column,bh=page number , int 10h
提示:显存分为8页(0到7)。我们在这个例子中使用的是0页面。
程序:
datasg segment para 'data'
msg db 'Hello world$'
datasg ends
codesg segment para 'code'
example proc far
assume cs:codesg,ds:datasg ;lead the assembler to know the segments.
mov ax,datasg ;this is because ds cannot be vaulued directly.
mov ds,ax ;move the data segment offset to its register.
mov ah,6h
mov al,25
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,0fh
int 10h
mov ah,2h
mov dh,2
mov dl,4
mov bh,0
int 10h
mov ah,9h
mov dx,offset msg
int 21h
mov ah,8h
int 21h
mov ah,4ch
int 21h
example endp
codesg ends
end main
https://stackoverflow.com/questions/42573828
复制相似问题