0053-dosbox-Debug-汇编游记-48-int指令
前言
int 指令就是内部CPU内部司令有事情让你要马上处理,你不得不放下手头上的事情,引发中断过程。
中断过程如下所示
取得 中断类型码
标志寄存器入栈 TF=0 IF=0
CS、IP 入栈
(ip) = (N*4),(cs)=(N*4+2)
iret 指令
iret 指令常常与 int 指令相互配合使用。类似于 call 指令与 ret 指令的相互配合。
iret 指令的过程
pop IP
pop CS
popf
意思是恢复int xxx 执行前的标志寄存器和CS、IP的值,
求一个 word 类型的平方
; 问题: 求一个 word 型数据的平方
; 参数: ax: 要计算的数据
; 返回值:dx、ax 中存放结果的高16位和低16位
; 应用举例: 求 2*3456^2
assume cs:code
code segment
start:
; 设置源地址和目标地址
mov ax,cs
mov ds,ax
mov si,offset sqr
mov ax,0
mov es,ax
mov di,200h
mov cx,offset sqrend - offset sqr
cld ; 设置传输方向位正
rep movsb
; 设置中断向量表
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,3456
int 7ch ; 调用中断 7ch 的中断例程,计算 ax 的数据的平方
add ax,ax ; 低位 *2
adc dx,dx ; 高位 *2
sqr:
mul ax
iret
sqrend:nop
mov ax,4c00h
int 21h
code ends
end start

本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
目录