合肥工业大学2021汇编语言程序设计上机实验二
实验二 高级汇编程序设计
- 实验目的
1、 掌握中断服务子程序的编写。
2、 汇编语言与高级语言的混编。
- 实验内容
1、挂接1CH中断,正计时90秒后退出。要求屏幕显示0-89的秒数。
2、VC++中编写内联汇编,将字节数组的每个元素高低四位互换。
char dbyte[] = {0x34,0x45,0x56,0x67,0xaf};
- 实验过程和程序
1、
详细过程:本题要求挂接1CH中断,正计时90秒后退出,要求屏幕显示0-89的秒数。因此定义一个计数器,把counter赋初值0,每隔一秒加1,并与89作比较,小于89则继续执行,否则退出。在具体编写中断服务子程序时按照具体的格式进行编写:保护现场、开中断、处理中断、关中断、发中断结束命令、恢复现场和中断返回这七个部分。中断服务子程序写好之后,挂接中断服务子程序需要修改中断向量以及保护恢复。
源程序:
stack segment stack
stack ends
data segment
oldisr dw ?,?
timer db 100
counter dw 0
isdone db 0
data endscode segment
assume cs:code,ds:data
start: mov ax,data;把data赋给给ax mov ds,ax;把数据转到数据段寄存器mov ax,0mov es,ax;protectcli;CLImov ax,es:[1ch*4]mov oldisr[0],axmov ax,es:[1ch*4+2]mov oldisr[2],axsti;set new isrclimov word ptr es:[1ch*4],offset isrmov word ptr es:[1ch*4+2],seg isrsti;wait herewaithere:cmp isdone,1jnz waithere;restore
exit:climov ax,oldisr[0]mov es:[1ch*4],axmov ax,oldisr[2]mov es:[1ch*4+2],ax;恢复原中断处理stimov ax,4c00h;该中断就是安全退出程序int 21hisr proc farpush dxpush axmov ax,datamov ds,axsti;便于中断嵌套 ;COUNT HEREinc timer
again:cmp timer,1000/55;18jb donemov timer,0;carriagemov ah,2mov dl,13int 21h;print timemov ax,countermov dl,10div dlmov dh,ahmov dl,almov ah,2add dl,30hint 21hmov dl,dhadd dl,30hint 21hinc countercmp counter,90 jnz donemov isdone,1;设置完成标志 done:pushfcall dword ptr oldisr;调用原中断处理clipop axpop dxiret;中断返回
isr endpcode endsend start
2、
详细过程:按照题目要求定义一个数组dbyte[] ={0x34,0x45,0x56,0x67,0xaf},然后用内联汇编子程序实现将字节数组的每个元素高低四位互换,具体操作就是把数组中的每一位分别存到al和bl中,对al右移4次,使高位到低位,高位用0补齐;对bl左移4次,使低位到高位,低位用0补齐,然后将al和bl相加,对数组中的每一位重复这个过程,直到结束。具体写代码时要注意的是,为了让编译程序识别内联汇编子程序,它的名称一定要以下划线_开头。
源程序:
#include<iostream>
using namespace std;
int main()
{ unsigned char dbyte[]={0x34,0x45,0x56,0x67,0xaf};cout << "交换之前数组内元素依次为:" << endl;for (int i = 0; i < 5; i++)cout << "0x" << hex << (int)dbyte[i] << ' ';cout << endl;cout << "交换之后数组内元素依次为:" << endl;for(int i=0;i<5;i++){unsigned char x=dbyte[i];unsigned char a;_asm{ mov cl, 4mov al, xmov bl, xshr al, cl//高位置低位shl bl, cl//低位置高位add al, blmov a, al}cout<<"0x"<<hex<<(int)a<<' ';}cout<<endl;return 0;
}
- 实验结果(包括必要的截图)
1:
2:
- 实验体会
- 通过这个实验内容我初步认识了中断向量表,了解了中断的流程:保存原中断向量->设置新中断向量->执行新中断处理->调用原中断处理->恢复原中断向量。知道了在中断服务子程序中,开始中断用sti表示,关闭中断用cli表示,但是在中断返回的伪代码上中断服务子程序与子程序不同,中断返回用的是iret而不是ret,而且中断是为系统所调用执行。
- 我了解到了如何实现嵌入式汇编——在C/C++语言中直接使用汇编语言语句,程序的大部分采用高级语言编写,以提高程序的开发效率;而在某些部分,可以利用汇编语言编写,以提高程序的运行效率。
其他实验:
合肥工业大学2021汇编语言程序设计上机实验一https://blog.csdn.net/qq_52791068/article/details/122703493
合肥工业大学2021汇编语言程序设计上机实验二相关推荐
- 合肥工业大学2021汇编语言程序设计上机实验一
实验一 基本汇编程序设计 实验目的 1.熟悉在PC机上建立.汇编.连接.调试和运行8086/8088汇编语言程序的过程: 2.掌握基本汇编语言程序设计方法. 3.熟悉DOSBOX下运行dos程序方法 ...
- 合肥工业大学2022大数据技术实验二
实验序号及名称:实验二 在Hadoop平台上部署WordCount程序实验时间∶ 2022年5月14日 预习内容 一.实验目的和要求∶ 在Hadoop平台上部署WordCount程序. 二.实验任务∶ ...
- 合肥工业大学2021离散数学上机实验一
实验一:逻辑运算表示与验证 实验目的和要求 实验目的:理解命题逻辑相关运算,增强逻辑推理能力 实验要求: (1).从键盘输入命题常元的真值求他们的合取.析取.求反.异或.单条件. 双条件以及命题表达式 ...
- 合工大计算机学硕分数线,合肥工业大学2021考研复试分数线已公布
2021考研国家线已公布,接下来迎来的是考研复试分数线,复试分数线决定游走在边缘的考生是否能够顺利进入复试环节,中公考研为大家整理"合肥工业大学2021考研复试分数线已公布",一起 ...
- 合肥工业大学计算机保研,合肥工业大学2021届保研分析,全校保研率12. 6%,而“它”48.8%...
合肥工业大学位于安徽,是教育部直属的全国重点大学,有合肥和宣城两个校区,学校是"211工程"."双一流"一流学科建设高校,管理科学与工程.电气.机械等学科为学校 ...
- 合肥工业大学2022大数据技术实验一
实验序号及名称:实验 一 安装Hadoop 实验时间∶ 2022年5月8日 预习内容 一.实验目的和要求∶ 在虚拟机上安装并熟悉Hadoop 二.实验任务∶ 请各位同学完成如下3个实验中的1个, ...
- 合工大计算机专业拟录取名单,合肥工业大学2021硕士研究生拟录取名单链接汇总...
2021合肥工业大学研究生拟录取名单汇总(各学院) 机械工程学院2021年硕士研究生拟录取名单公示 http://jxxy.hfut.edu.cn/2021/0330/c9177a252788/pag ...
- java合肥工业大学考试题库_合肥工业大学java程序设计实验二
合肥工业大学java程序设计实验二 1 / 3<Java 程序设计>实验报告--实验 2实验室:三.四机房 2014 年 05 月 22日学院 计算机与信息学院 专业班级 姓名 成绩课程名 ...
- 合肥工业大学c语言是试卷,合肥工业大学2005-2007年C语言程序设计试卷参考答案.doc-资源下载人人文库网...
合肥工业大学2005-2007年<C语言程序设计>试卷参考答案.doc 合肥工业大学2005年C语言程序设计试卷参考答案一. 填空题(分,每空1分)1main( ) 或主函数 21 7 3 ...
最新文章
- Android中的坐标系以及获取坐标的方法
- python abs()函数是什么意思?
- python2定点找色_Python实现按键精灵(二)-找图找色
- erlang精要(5)-列表推导式
- android游戏开发框架libgdx的使用(完)—杂谈Libgdx
- oem模式是什么_OEM的完整形式是什么?
- 微软 Windows 再度“围剿” Google Chrome
- poj 2728 Desert King 01分数规划
- bcdboot修复win10引导并通过ubuntu live USB安装grub
- python如何截长图_python如何实现对元素的长截图功能 python实现对元素的长截图功能实例...
- MongoDB实验练习题
- python实现自动点击桌面按钮_Python实现鼠标隔几秒自动点击电脑某区域
- 人工神经网络及其应用,人工神经网络的实现
- 自动控制原理matlab pdf下载,第五章-matlab在自动控制原理中的应用.pdf
- 用java输出学生信息表代码_使用java导出学生成绩表-excel成绩表
- 有 5 个人坐在一起,问第五个人多少岁?
- 销售管理——怎样判断商机
- 猫儿PDF-Word格式转换经验谈
- Oracle优化面试题
- java笔试题50道 收藏版