《汇编语言》王爽第三版实验16

本文详细分析了在《汇编语言》王爽第三版实验16中遇到的问题,即安装7ch中断程序后,测试程序调用子程序时找不到正确入口。问题源于中断向量表和子程序入口地址的不匹配。文中提出了两种解决方法:一是使用`org 200h`调整程序起始位置;二是利用20h:0的内存地址形式保持偏移地址一致。此外,还提供了一个测试程序,实现了清屏、设置颜色和滚动屏幕等功能。
摘要由CSDN通过智能技术生成

问题:这里有个坑,如果像书本那样写,安装了7ch中断程序后,你再另写一个测试程序引发7ch中断程序,执行时会找不到table里面的子程序入口地址。书本代码如下:

assume cs:code

code segment

setscreen:	
	jmp short set
	
	table dw clean_screen,set_foreColor,set_backColor,scroll_up
set:
	push bx
	cmp ah,3	;参数ah存放功能号,功能号范围是0-3,对应4种功能
	ja sret
	mov bl,ah
	mov bh,0
	add bx,bx		;根据ah中的功能号计算对应子程序在table表中的偏移
	call word ptr table[bx]	;调用对应的子程序功能

sret:	pop bx
	iret



clean_screen:
	push bx
	push es
	push cx
	mov bx,0b800h
	mov es,bx
	mov bx,0		
	mov cx,2000
print_space:
	mov byte ptr es:[bx],' '
	add bx,2
	loop print_space

	pop cx
	pop es
	pop bx

	ret


set_foreColor:
	push bx
	push cx
	push es
	mov bx,0b800h
	mov es,bx
	mov bx,1		;显示缓存区奇数位存属性
	mov cx,2000
set012bit:
	and byte ptr es:[bx],11111000b
	or es:[bx],al	;参数al为颜色值
	add bx,2
	loop set012bit

	pop es
	pop cx
	pop bx
	ret



set_backColor:
	push bx
	push cx
	push es
	mov cl,4
	shl al,cl
	mov bx,0b800h
	mov es,bx	
	mov bx,1		;显示缓存区奇
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值