王爽《汇编语言》(第四版)第十三章 检测点13.1、13.2

1、检测点 13.1

(1)用 7ch 中断例程实现 loop 的功能,则上述 7ch 中断例程所能进行的最大转移位移是多少?

上述中断例程进行的位移存放在寄存器 BX 内:

mov bx,offset s-offset se

寄存器 BX 为 16 位寄存器,所表示的最大转移位移为 -32768~32767。

(2)用 7ch 中断例程完成 jmp near ptr s 指令的功能,用 bx 向中断例程传送转移位移。

应用举例:在屏幕的第 12 行显式 data 段中,以 0 结尾的字符串。

7ch中断例程的安装程序和中断处理子程序代码如下:

assume cs:code
code segment
start:    ;7ch例程安装程序
	mov ax,0
	mov es,ax
	mov di,200h
	mov ax,cs
	mov ds,ax 
	mov si,offset lp  
	mov cx,offset lpend-offset lp 
	cld
	rep movsb
    ;修改中断向量表
	mov ax,0
	mov es,ax 
	mov word ptr es:[7ch*4],200h
	mov word ptr es:[7ch*4+2],0h
	mov ax,4c00h 
	int 21h
lp:    ;7ch中断处理程序
	push bp 
	mov bp,sp 
	add [bp+2],bx 	;将IP的内容设置为标号s的偏移地址
	pop bp 
	iret 
lpend:
	nop
code ends 
end start

应用程序调用7ch中断例程代码如下:

assume cs:code 
data segment
	db 'conversation',0
data ends 
code segment
start:
	mov ax,data
	mov ds,ax		;段寄存器DS指向data段
	mov si,0
	mov ax,0b800h
	mov es,ax		;段寄存器ES指向显示区域
	mov di,160*12
s:
	cmp byte ptr [si],0	
	je ok 						;如果上述比较等于零则跳转到标号ok处
	mov al,[si]
	mov byte ptr es:[di],al		;写入字符串内容
	mov byte ptr es:[di+1],2h	;给字符加上绿色属性
	inc si 				;偏移1个字节从字符串取字符
	add di,2			;偏移2个字节得到下一个写入地址
	mov bx,offset s-offset ok ;转移位移
	int 7ch
ok:
	mov ax,4c00h
	int 21h
code ends
end start 

 2、检测点 13.2

(1)我们可以编程改变 FFFF:0 处的指令,使得 CPU 不去执行 BIOS 中的硬件系统检测和初始化程序。

错误,该内存区域为BIOS的ROM,可读不可写

(2)int 19h 中断例程,可以由 DOS 提供。

错误,int19h 不是由 DOS 提供的,因为在 DOS 装入中断例程前 int19h 已存在于内存中,int19h恰恰是为了引导操作系统的安装,在此之前操作系统还未建立不可用。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值