前言

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

标签: int, start, 前言, add, 类型, , 数据, word, 如下, 指令, 地址, mov, pop, , assume, xxx, endsend, 存放, offset, ptr, ret, call, mul, 标志, 结果, adc, movsb, rep, 中断, iret

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

发送一条友善的评论

  • 目录