《汇编语言》第13章 int指令——实验13 编写、应用中断例程

article/2025/7/13 2:19:50

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

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

以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察 int、iret指令执行前后CS、IP和栈中的状态。

;sy13_1.asmassume cs:code 
data segment db "welcome to masm! ",0
data endscode segment 
start:	mov dh,10mov dl,10mov cl,2 mov ax,data mov ds,ax mov si,0int 7ch mov ax,4c00h int 21h 
code ends
end start

int 7ch 中断程序

;sy13_1i.asm 实验13(1)的 int 7c中断例程
;功能:显示一个0结束的字符串,中断例程安装在0:200处
;参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串首地址assume cs:code 
code segment 
start:			mov ax,cs mov ds,ax mov si,offset show_str 						;设置ds:si指向源地址mov ax,0mov es,ax mov di,200h 								;设置es:di指向目标地址mov cx,offset show_strend - offset show_str;设置cx为传输长度 cld											;设置传输方向为正rep movsb ;设置中断向量表 mov ax,0mov es,ax mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0mov ax,4c00hint 21h 
;名称:show_str 
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。 
;参数:(dh)=行号(取值范围0~24); 
;      (dl)=列号(取值范围0~79); 
;      (cl)=颜色; 
;      ds:si指向字符串的首地址。 
;返回:无。
show_str:		push ax push bxpush es push si mov ax,0b800h mov es,ax mov ax,160mul dh mov bx,ax 					;bx=160*dh mov ax,2mul dl 						;ax=dl*2 add bx,ax 					;mov bx,(160*dh+dl*2)设置es:bx指向显存首地址mov al,cl 					;把颜色cl赋值al mov cl,0
show0:			mov ch,ds:[si] jcxz show1 					;(ds:si)=0时,转到show1执行  mov es:[bx],ch mov es:[bx+1],al inc si 						;ds:si指向下一个字符地址add bx,2 					;es:bx指向下一个显存地址jmp show0 
show1:			pop si pop es pop bx pop ax iret mov ax,4c00hint 21h show_strend: nop 
code ends
end start

运行结果:

 

(2)编写并安装int 7ch中断例程,功能为完成loop指令的功能。参数:(cx)=循环次数,(bx)=位移。

以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察 int、iret指令执行前后CS、IP和栈中的状态。

在屏幕中间显示80个“!”。

;sy13_2.asm  assume cs:code 
code segment 
start:	mov ax,0b800hmov es,ax mov di,160*12mov bx,offset s - offset se 		;设置从标号 se到标号 s的转移位移mov cx,80s:	mov byte ptr es:[di],'!'add di,2 int 7ch 										;如果(cx)≠0,转移到标号s处se:	nop mov ax,4c00h int 21h 
code ends 
end start 

中断程序源码

;sy13_2.asm   实现13(2)的int 7ch中断程序assume cs:code 
code segment ;安装中断程序
start:	mov ax,cs mov ds,ax mov si,offset lp						;设置ds:si指向源地址mov ax,0mov es,ax mov di,200h 							;设置es:di指向目标地址mov cx,offset lpend - offset lp 		;设置cx为传输长度cld										;设置传输方向为正rep movsb ;设置中断向量表mov ax,0mov es,ax mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0mov ax,4c00h int 21h lp:	push bp mov bp,sp dec cxjcxz lpretadd ss:[bp+2],bx 	;功能实质是IP = offset se + (offset s - offset se) = offset s lpret:	pop bp iret 								;跳转到s标号处理mov ax,4c00h int 21h 
lpend:	nop code ends 
end start 

运行调试

进入7ch中断程序代码

执行中断代码,psw,cs,ip,bp相继入栈

iret指令执行完成后回到主程序

g 0018指令结束程序

 

(3)下面的程序,分别在屏幕的第2、4、6、8行显示4句英文诗,补全程序。

;sy13_3.asm    (3)下面的程序,分别在屏幕的第2、4、6、8行显示4句英文诗,补全程序。assume cs:code 
code segment s1: db 'Good,better,best,,','$'s2: db 'Never let it rest','$'s3: db 'Till good is better,','$'s4: db 'And better,best.,','$'s:	dw offset s1, offset s2, offset s3,offset s4 
row:	db 2,4,6,8
start:  mov ax,cs mov ds,ax mov bx,offset s mov si,offset row mov cx,4 
ok:	    mov bh,0					;第0页mov dh,ds:[si]				;dh中放行号mov dl,0					;dl中放列号mov ah,2 					;置光标int 10h mov dx,ds:[bx]				;ds:dx指向字符串首地址mov ah,9					;在光标位置显示字符int 21h inc si 						;行号递增add bx,2					;指向下一字符串loop ok mov ax,4c00hint 21h 
code ends
end start 

运行结果:

 

完成后编译运行,体会其中的编程思想。


http://www.hkcw.cn/article/aIldhexmKG.shtml

相关文章

大模型前处理-CPU

前处理包含哪些流程 分词 tokenizationembedding CPU可以做哪些优化 分词 分词在做什么? 什么是词元化? 词元化(Tokenization)是把一段自然语言文本拆分成更小的单元(称为“词元”,即 Token&#xff0…

设备驱动与文件系统:02 键盘

操作系统中键盘驱动的讲解 在这一讲中,我将为大家讲解键盘相关内容。从上一讲开始,我们进入了操作系统第四个部分的学习,也就是操作系统对设备的驱动与管理。 上一讲我们探讨的是显示器,并且提到,一个终端设备是由显示…

工作流引擎-18-开源审批流项目之 plumdo-work 工作流,表单,报表结合的多模块系统

工作流引擎系列 工作流引擎-00-流程引擎概览 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求 工作流引擎-02-BPM OA ERP 区别和联系 工作流引擎-03-聊一聊流程引擎 工作流引擎-04-流程引擎 activiti 优…

Windows环境下Scoop包管理工具的全面指南

🧩 一、Scoop核心特性与设计理念 定位与优势 专注于开源命令行工具和便携式(Portable)应用,无需管理员权限即可安装,减少系统污染。自动管理环境变量(通过shims目录),安装后即时可用…

谷粒商城-分布式微服务项目-高级篇[三]

十五、商城业务-支付 15.1 支付宝支付 15.1.1 进入“蚂蚁金服开放平台” 支付宝开放 平台地址: 支付宝开放平台 15.1.2 下载支付宝官方 demo,进行配置和测试 开发者文档:支付宝开放平台文档中心 电脑网站支付文档:小程序文…

EchoMimicV2:迈向引人注目、简化的半身人类动画

今天介绍EchoMimicV2,EchoMimicV2是阿里蚂蚁集团推出的半身人体AI数字人项目,输入参考图片、音频、和手部姿势序列生成动画视频(对图片的规范要求比较高,图片规范的话效果还可以),感兴趣的还可以去了解一下…

SpringBoot手动实现流式输出方案整理以及SSE规范输出详解

背景: 最近做流式输出时,一直使用python实现的,应需求方的要求,需要通过java应用做一次封装并在java侧完成系统鉴权、模型鉴权等功能后才能真正去调用智能体应用,基于此调研java实现流式输出的几种方式,并…

vuex的使用

❀ ❀ ❀ ❀ ❀ ❀ ❀ vuex的官网 ❀ ❀ ❀ ❀ ❀ ❀ ❀ ❀ 这里用法不纯粹。用户toolbar页面切换时的传参。若后期有更好的方式,会更改。因vuex用于全局,在这个场景下使用有点大材小用了 其中需要注意的点就是更新、获取状态 更新状态。updateProjec…

Calendar和Datepicker

Displaystart Displayend "2024-10-8" selectedDate属性 设定选择的日期 在 C# 中,DateTime? date1 表示 **一个可空的 DateTime 类型变量**。 ?.是不为零 ?是可以为零0️⃣ 多选 selectionmode none不让选 singlerange shift …

赛事获奖|TsingtaoAI荣获“雄才杯”2025创新创业大赛总决赛奖项

5月16-18日,由雄安新区党工委人才工作领导小组办公室主办的“雄才杯”2025创新创业大赛总决赛在雄安新区成功举办。TsingtaoAI凭借“基于DeepSeek的具身智能实训”项目荣获优胜奖,本项目为参赛项目中唯一的教育科技服务类获奖项目。 大赛背景 本次总决…

初识vue3(vue简介,环境配置,setup语法糖)

一,前言 今天学习vue3 二,vue简介及如何创建vue工程 Vue 3 简介 Vue.js(读音 /vjuː/,类似 “view”)是一款流行的渐进式 JavaScript 框架,用于构建用户界面。Vue 3 是其第三代主要版本,于 …

C++面向对象(二)

面向对象基础内容参考: C面向对象(一)-CSDN博客 友元函数 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定…

基于AIS的海洋观测应用

知识星球:数据书局。打算通过知识星球将这些年积累的知识、经验分享出来,让各位在数据治理、数据分析的路上少走弯路,另外星球也方便动态更新最近的资料,提供各位一起讨论数据的小圈子 1.背景 船舶自动识别系统(Aut…

imx6ull(0):烧录、启动

参考内容: i.MX6ULL Applications Processors for Industrial Products i.MX6ULLApplicationsProcessorReferenceManual 正点原子 I.MX6U嵌入式Linux驱动开发指南 以及 广大工程师们在互联网上分享的学习笔记(一样东西学的人多的时候所带来的优势) 例如这里我用…

CloudCompare——使用CSF算法进行点云高程归一化

目录 1.算法原理2.软件操作2.1 CSF算法2.2 生成CSF网格2.3 平滑网格(可选)2.4 计算点云到网格的距离2.5 将计算得到的距离赋值给高程 3.结果展示3.1 原始点云3.2 归一化结果 1.算法原理 点云高程归一化的关键在于获取原始点云地面数据的DEM。可选取CSF算法提取样地点云地面DEM。…

【C语言】C语言经典小游戏:贪吃蛇(下)

文章目录 一、游戏前准备二、游戏开始1、游戏开始函数(GameStart)1)打印欢迎界⾯(WelcomeToGame)2)创建地图(CreateMap)3)初始化蛇⾝(InitSnake)4…

循序渐进 Android Binder(一):IPC 基本概念和 AIDL 跨进程通信的简单实例

Binder 给人的第一印象是”捆绑者“,即将两个需要建立关系的事物用某些工具束缚在一起。在 Android 中,Binder 是一种高效的跨进程通信(IPC)机制,它将可以将运行在不同进程中的组件进行绑定,以实现彼此通信…

ISBN书号查询接口如何用PHP实现调用?

一、什么是ISBN书号查询接口 ISBN数据查询接口是一项图书信息查询服务。它基于全球通用的ISBN编码系统,帮助用户快速获取图书的详细信息,包括书名、作者、出版社、出版时间、价格、封面等关键字段。 该接口广泛应用于电商平台、图书馆管理系统、二手书…

Linux(信号)

目录 一 什么是信号 二 Linux中的信号 1. 查看信号:kill -l 2. 自定义信号的处理方式 2.1 API 2.2 demo 3. 理解信号的发送 4. 信号产生的方式 三 信号保存 四 捕捉信号 1. 先来说说硬件中断: 1. 谁调度操作系统? 2. 理解时间片…

[Windows] Simple Live v1.8.3 开源聚合直播 :支持哔哩哔哩 虎牙 斗鱼 抖音

Simple Live 是一款基于 AllLive 项目 开发的开源聚合直播 APP,支持 哔哩哔哩、虎牙、斗鱼、抖音 等主流平台,具备 无广告、低占用、弹幕互动 等核心优势。其核心功能包括:全平台覆盖:一站式聚合多平台直播资源,无需切…