王爽《汇编语言》第十三章实验——int指令引发的中断

其实这一章和第十二章的内容是差不多的,只不过这一章着重讲述了int指令引发的内中断。

1. int 指令格式


             int   n      ; n为中断类型码


2. cpu 执行 int 指令的过程

 cpu执行 int 指令,相当于引发一个n号中断的中断过程,执行过程如下

    (1) 取中段类型码n;

    (2) 标志寄存器入栈;

    (3) CS、IP 入栈

    (4) (IP) = (n*4), (CS) = (n*4+2)。


3. 第十三章实验代码:

实验一:编写并安装 int 7ch 中断例程,功能为显示一个用 0 结束的字符串,中断例程安装在0:200 处

参数:(dh) = 行号,(dl) = 列号,(cl) = 颜色, ds:si 指向字符串首地址

assume cs:code
data segment
	db "welcome to masm!",0
data ends

code segment
	   start: mov ax,cs
		  mov ds,ax
		  mov si,offset do7c
		  mov ax,0
		  mov es,ax
		  mov di,200h
		  
		  mov cx,offset do7cend - offset do7c
		  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 dh,24
		  mov dl,63
		  mov cl,4
		  mov ax,data
		  mov ds,ax
		  mov si,0
		  int 7ch
		  mov ax,4c00h
		  int 21h
		  
	    do7c: mov ax,0b800h
		  mov es,ax
		  mov al,160
		  mul dh
		  mov di,ax
		  mov al,2
		  mul dl
		  add di,ax
		  mov al,cl
           begin: mov cl,[si]
		  jcxz ok
		  mov es:[di],cl
		  inc di
		  mov es:[di],al
		  inc si
		  inc di
		  jmp short begin
	      ok: iret
         do7cend: nop
code ends 
end start


运行结果:



实验二:编写并安装 7ch 中断例程,功能为完成 loop 指令的功能

参数: (CX) = 循环次数, (BX) = 位移

assume cs:code
code segment
         start: mov ax,cs
		mov ds,ax
		mov si,offset do7c
		mov ax,0
		mov es,ax
		mov di,200h
		
		mov cx,offset do7ce - offset do7c
		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,0b800h
	        mov es,ax
		mov di,160*12
		mov bx,offset s - offset se
	        mov cx,80
	     s: mov byte ptr es:[di],'!'
	        add di,2
		int 7ch
	    se: nop
	        mov ax,4c00h
		int 21h
          do7c: push bp
		mov bp,sp
		dec cx
		jcxz ok
		add [bp+2],bx
	    ok: pop bp
		iret
         do7ce: nop
code ends
end start

运行结果:



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值