文档库 最新最全的文档下载
当前位置:文档库 › 华科汇编语言程序设计实验

华科汇编语言程序设计实验

华科汇编语言程序设计实验
华科汇编语言程序设计实验

课程实验报告

课程名称:汇编语言程序设计实验

实验名称:实验四输入输出与中断处理程序设计

实验时间: 2017-4-19,14:00-17:30 实验地点:南一楼804室74号实验台指导教师:班鹏新专业班级:计算机科学与技术1503班学号:U201514558 姓名:刘伟光

同组学生:余昆刘智博报告日期:2017年 4 月19日原创性声明

本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。

特此声明!

学生签名:

日期: 2017.4.19 成绩评定

实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)报告撰写质量得分(30分)

(报告规范、完整、通顺、

详实等)

总成绩(100分)

指导教师签字:

日期:

目录

1实验目的与要求 (3)

2实验内容 (3)

3实验过程 (4)

3.1任务1 (4)

3.1.1设计思想及存储单元分配 (4)

3.1.2流程图 (4)

3.1.3源程序 (4)

3.1.4实验步骤 (5)

3.1.5实验记录 (5)

3.2任务2 (7)

3.2.1设计思想及存储单元分配 (7)

3.2.2流程图 (7)

3.2.3源程序 (7)

3.2.4实验步骤 (10)

3.2.5实验记录 (10)

3.3任务3 (12)

3.3.1设计思想及存储单元分配 (12)

3.3.2流程图 (12)

3.3.3源程序 (12)

3.3.4实验步骤 (14)

3.3.5实验记录 (14)

3.4任务4 (15)

3.4.1设计思想及存储单元分配 (15)

3.4.2流程图 (15)

3.4.3源程序 (16)

3.4.4实验步骤 (23)

3.4.5实验记录 (23)

3.5任务5 (24)

3.5.1设计思想及存储单元分配 (24)

3.5.2流程图 (24)

3.5.3源程序 (24)

3.5.4实验步骤 (24)

3.5.5实验记录 (24)

4体会 (27)

参考文献 (28)

1实验目的与要求

(1) 掌握中断矢量表的概念;

(2)熟悉I/O访问,BIOS功能调用方法;

(3) 掌握实方式下中断处理程序的编制与调试方法。

2实验内容

任务1:用三种方式获取中断类型码16H对应的中断处理程序的入口地址。

要求:首先要进入虚拟机状态,然后

(1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息。

(2)编写程序,用16H功能调用方式获取(16H的使用可查阅教材附录),观察功能调用相应的出口参数与“(1)”看到的结果是否相同(使用TD观看出口参数即可)。

(3)编写程序,直接读取相应内存单元,观察读到的数据与“(1)”看到的结果是否相同(使用TD观看程序的执行结果即可)。

任务2:编写一个接管键盘中断的中断服务程序并驻留内存,要求在程序返回DOS操作系统后,键盘上的小写字母都变成了大写字母。

要求:

(1)在 DOS虚拟机或DOS窗口下执行程序,中断服务程序驻留内存。

(2)在DOS命令行下键入小写字母,屏幕显示为大写,键入大写时不变。执行TD,在代码区输入指令“mov AX,0”看是否能发生变化。

(3)选作:另外编写一个中断服务程序的卸载程序,将键盘中断服务程序恢复到原来的状态

任务3:读取CMOS内指定单元的信息,按照16进制形式显示在屏幕上。

要求:

(1)先输入待读取的CMOS内部单元的地址编号(可以只处理编号小于10的地址单元)。再使用IN/OUT指令,读取CMOS内的指定单元的信息。

(2)将读取的信息用16进制的形式显示在屏幕上。若是时间信息,可以人工判断一下是否正确。

3实验过程

3.1任务1

3.1.1设计思想及存储单元分配

用三种方式获取中断类型码10H对应的中断处理程序的入口地址。

1.直接在td中观察指定ds:58H中的值和ds:5A中的值。

2.系统功能调用35H,入口参数为AL=16H,取中断信息。

3.直接把主存中的DS:[58H],DS:[5AH]赋值给寄存器BX和CX。3.1.2流程图

3.1.3源程序

1.程序名41

.386

STACK SEGMENT USE16 STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT USE16

ASSUME CS:CODE

START: XOR AX,AX

MOV DS,AX

MOV AX,3516H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

2.程序名42

.386

STACK SEGMENT USE16 STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT USE16

ASSUME CS:CODE, SS:STACK

START: XOR AX,AX

MOV DS,AX

XOR BX,BX

XOR CX,CX

MOV BX,DS:[58H]

MOV CX,DS:[5aH]

MOV AH,4CH

INT 21H

CODE ENDS

END START

3.1.4实验步骤

1.直接运行td,直接计算16h所调用的中断矢量表的位置的段首址和偏移地址,分别是58h和5Ah。在数据段中输入ds:58h,观察其值。

2.将程序41编译、链接,调试直到没有错误。运行td 41,在td中单步调试,观察es与bx的改变情况;

3.将程序42编译、链接,调试直到没有错误。运行td 42,在td中单步调试,观察寄存器的值。

4.总结计算中断指令表的规律和总结错误。

3.1.5实验记录

1.实验环境条件:16M内存;WINDOWS XP命令行窗口;EDIT.EXE

2.0;MASM.EXE 6.0;LINK.EXE 5.2; TD.EXE 5.0。

2.方法一,直接观察ds段,可以观察到从0:40h开始低2个字节为11E0,高2个字节为F000;观察如图

3.1.1所示。

图3.1.1 直接观察td中的主存

3.方法二,调用35号系统功能,在TD内观察到es为11E0,bx为11E0;观察如图3.1.2所示。

图3.1.2 调用35号功能观察

分析:可以直接调用35号调用来获取中断入口地址。

4.方法三,将0:40h开始的低2个字节移至bx,高2个字节移至cx,得到cx为F000,bx为11E0;观察如图3.1.3所示。

图3.1.3 通过寄存器观察中断矢量表

5.比较上述三种方法得到的结果,发现它们一致,说明以上方法实施得到的结果准确无误。

6.(思考题)总结分析:在计算中断矢量表位置时,计算第n个中断指令可用ds:n*4和ds:n*4+2分别得到其位置,值得注意的是在TD中使用的是16进制,需要做一些适量转化.。在这次中总结错误为,如果汇编代码没有执行语句MOV DS,AX的话,其内存中保存的值不会是中断矢量表。错误如图3.1.4所示:

图3.1.4 没有执行MOV DS,AX的主存

3.2任务2

3.2.1设计思想及存储单元分配

设计思想:

修改键盘驱动中断程序(int 16h),将中断矢量表0:58h开始的4个字节修改为新的中断程序的偏移地址和段首址,并保存号旧的键盘驱动中断程序的偏移地址和段首址。

在新的中断程序中,先判断用户调用的是否为键盘驱动中断程序的读入键盘功能,若不是,则直接调用旧的键盘驱动中断程序;若是,则对输入进行处理。

实际上我们改变出口参数中AL的值即是键入字符的ASCII码即可实现。

3.2.2流程图

任务2流程图如图3.2.1所示。

图3.2.1任务2流程图

3.2.3源程序

程序名43 接管中断程序

.386

DATA SEGMENT USE16

DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,SS:STACK

OLD_INT DW ?,?

NEW16H:CMP AH,00H

JE ATB

CMP AH,10H

JE ATB

JMP DWORD PTR OLD_INT

ATB:

PUSHF

CALL DWORD PTR OLD_INT

CMP AL,97 ;比较输入的ascii码 JAE NEXT1

JMP QUIT

NEXT1: CMP AL,122

JBE TOBIG

JMP QUIT

TOBIG: sub AL,32

QUIT: IRET

START: XOR AX,AX

MOV DS,AX

MOV AX,DS:[16H*4]

MOV OLD_INT,AX ;保存偏移部分 MOV AX,DS:[16H*4+2]

MOV OLD_INT+2,AX ;保存段值

CLI

MOV WORD PTR DS:[16H*4],OFFSET NEW16H MOV DS:[16H*4+2],CS

STI

MOV DX,OFFSET START+15

SHR DX,4

ADD DX,10H

MOV AL,0

MOV AH,31H

INT 21H

CODE ENDS

STACK SEGMENT USE16 STACK

DB 200 DUP(0)

STACK ENDS

END START

程序名44 卸载中断指令

.386

DATA SEGMENT USE16

DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,SS:STACK

OLD_INT DW ?,?

NEW16H:CMP AH,00H

JE ATB

CMP AH,10H

JE ATB

JMP DWORD PTR OLD_INT

ATB:

PUSHF

CALL DWORD PTR OLD_INT

CMP AL,97 ;比较输入的ascii码 JAE NEXT1

JMP QUIT

NEXT1: CMP AL,122

JBE TOBIG

JMP QUIT

TOBIG: sub AL,32

QUIT: IRET

START: XOR AX,AX

MOV DS,AX

MOV AX,DS:[16H*4]

MOV OLD_INT,AX ;保存偏移部分 MOV AX,DS:[16H*4+2]

MOV OLD_INT+2,AX ;保存段值

CLI

MOV WORD PTR DS:[16H*4],11E0H

MOV WORD PTR DS:[16H*4+2],F000H

STI

MOV DX,OFFSET START+15

SHR DX,4

ADD DX,10H

MOV AL,0

MOV AH,31H

INT 21H

CODE ENDS

STACK SEGMENT USE16 STACK

DB 200 DUP(0)

STACK ENDS

END START

3.2.4实验步骤

1.编译,链接。

2. 观察提示信息,若出错,则用编辑程序修改错误,修改后再重新编译。

3. 在键盘键入小写字母和大写字母,用空格符号分开,观察输出。

4.(思考题)在DOS命令行下键入小写字母,屏幕显示为大写,键入大写时不变。执行TD,在代码区输入指令“mov AX,0”看是否能发生变化。

5. (思考题)编写中断服务程序的终止程序,并做观察。

6. (思考题)同时打开另外一个虚拟DOS窗口,键盘大小写是否被替代。

3.2.5实验记录

1.实验环境条件:16M内存;WINDOWS XP命令行窗口;EDIT.EXE

2.0;MASM.EXE 6.0;LINK.EXE 5.2; TD.EXE 5.0。

2. 在键盘键入小写字母和大写字母,用空格符号分开,观察输出

当输入小写的abyz加空格和大写的ABYZ,输出如图3.2.2所示:

图3.2.2执行程序后的输入显示

3.(思考题)通过编写代码发现,将旧的中断程序的偏移地址与首地址保存下来后,可有有两种方式调用旧的中断程序:

Jmp dword ptr old_int;

Call dword ptr old_int;

前一种方式,可直接结束新的(不返回至)中断程序;后一种方式,可返回至新的中断程序。

4.(可选题)运行卸载程序,观察卸载结果,先运行43程序,再运行44程序。输出如图3.2.3所示:

图3.2.3运行卸载程序之后观察大小写

5.(思考题)在DOS命令行下键入小写字母,屏幕显示为大写,键入大写时不变。执行TD,在代码区输入指令“mov AX,0”,观察其变化。显示如图3.2.4所示:

图3.2.3运行新的中断程序后再td中输入“mov AX,0”

分析:在DOS虚拟机上运行了改变为新的中断处理程序,在DOS中将小写变为了大写,但是运行了TD,在TD中写语句小写并没有变成大写,可见中断处理程序的影响范围是有限的。

6. (思考题)同时打开另外一个虚拟DOS窗口,观察键盘大小写是否被替代。

图3.2.4观察键盘大小写是否被替代

由观察可知在新的DOS窗口中,其大小写没有改变。

7.错误总结一:在卸载程序时写了一句MOV WORD PTR DS:[16H*4+2],F000H,但是编译器给报出错误,分析原因后,是因为以F开头编译器会将其视为变量的名字,所以报出错误,解决方案是在

微机原理试卷(华中科技大学)

微机原理试卷 (照片整理版) 一、计算题 1、十进制数205的二进制数、十六进制数、BCD码分别是多少? 答:205D=11001101B=CDH=001000000101BCD 2、设X=5AH,Y=0B3H,试计算:X异或Y,X或Y。 答:(过程:X=01011010, Y=10110011, X异或Y=11101001=E9H X或Y=11111011=FBH) 答案:E9H和FBH 3、给定一个堆栈区,其地址为:1250H:0000H~1250H:0100H,(SP)=0052H, 请问:1.栈顶地址是什么?2.栈底地址是什么?在堆栈段SS中的段 地址?3.若存入数据2456H,数据在内存中如何存放?此时SP的 内容是什么? 答:1.栈顶地址:12500H 2.栈底地址:12600H CS:1250H 3.24 存到1252H单元,56存到1250H单元SP=0050H 二、基本概念题 1、8K X4位的存储器分别需要13根地址线和4根数据线,从地址线 A0到地址线A n,地址线每增加一根A n+1,则寻址范围增加2n+1-2n B. 2、计算机存储单元中存储的数据值超过了机器字长所能表示的范围称为 溢出,下述机器数形式可表示的数值范围是:单字节无符号整数 0~255,单字节有符号整数-128~127。(用十进制表示) 3、八片16K x4的存储器芯片可以设计为存储容量32K的16位存储体。 4、宏汇编语言程序被汇编时,程序汇编语句产生代码指令,伪指令 语句不产生代码指令,宏指令语句可能产生也可能不产生代码指令。 5、一个较完善的指令系统应包括数据传送类指令,算术运算类 指令,逻辑运算类指令,程序控制类指令,字符串类指令和系统控制类指令。 6、堆栈是一种特殊的数据存储寻址方式,遵循后进先出的原则,设 SP=00A8H,如果用栈操作指令压入三个数据,则SP变为00A2H;若有用 栈操作指令弹出两个数据,则SP又变为00A6H。 7、形成操作数地址的方式,称为寻址方式,当CPU访问外部存储器或 I/O端口时有哪几种典型寻址方式:立即寻址、寄存器寻址、直接寻址、 寄存器间接寻址,变址寻址、基址变址寻址、相对基址加变址寻址。这些寻址方式的操作会在时序上产生总线周期。 8、片内单元的选择由直接连接到存储器或I/O端口芯片的从A0开始的地 位地址经片内译码电路完成,实现存储器内存单元或I/O接口单元片内寄存器端口的选择。而存储器或I/O端口芯片的选通信号由高位地址线经组合逻辑或译码电路完成,实现不同芯片地址空间的分配。(注:

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

数字信号处理基础实验指导书

《数字信号处理》实验指导书 光电工程学院二○○九年十月

实验一离散时间信号分析 一、实验目的 1.掌握各种常用的序列,理解其数学表达式和波形表示。 2.掌握在计算机中生成及绘制数字信号波形的方法。 3.掌握序列的相加、相乘、移位、反转等基本运算及计算机实现与作用。 4.掌握线性卷积软件实现的方法。 5.掌握计算机的使用方法和常用系统软件及应用软件的使用。 6.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列来表示,其中代表序列的第n个数字,n代表时间的序列,n的取值范围为的整数,n取其它值没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号进行等间隔采样,采样间隔为T,得到一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)、单位阶跃序列、矩形序列、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反转、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将和的变量换成,变成和,再将以纵轴为对称轴反褶成。 (2)移位:将移位,得。当为正数时,右移位;当为负数时,左

移位。 (3)相乘:将和的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得。 三、主要实验仪器及材料 微型计算机、Matlab软件6.5或更高版本。 四、实验内容 1.知识准备 认真复习以上基础理论,理解本实验所用到的实验原理。 2.离散时间信号(序列)的产生 利用MATLAB或C语言编程产生和绘制下列有限长序列: (1)单位脉冲序列 (2)单位阶跃序列 (3)矩形序列 (4)正弦型序列 (5)任意序列 3.序列的运算 利用MATLAB编程完成上述两序列的移位、反转、加法、乘法等运算,并绘制运算后序列的波形。 4.卷积运算 利用MATLAB编制一个计算两个序列线性卷积的通用程序,计算上述两序列,并绘制卷积后序列的波形。 5.上机调试并打印或记录实验结果。 6.完成实验报告。 五、实验报告要求 1. 简述实验原理及目的。 2. 给出上述序列的实验结果。 3. 列出计算卷积的公式,画出程序框图,并列出实验程序清单 (可略)(包括必要的程序说明)。 4. 记录调试运行情况及所遇问题的解决方法。 5. 给出实验结果,并对结果做出分析。 6. 简要回答思考题。 1 如何产生方波信号序列和锯齿波信号序列? 2 实验中所产生的正弦序列的频率是多少?是否是周期序列?

华科_计算机系统实验报告

课程实验报告课程名称:计算机系统基础 专业班级: 学号: 姓名: 指导教师: 报告日期:年月日 计算机科学与技术学院

目录 实验1: (1) 实验2: (7) 实验3: (24) 实验总结 (34)

实验1:数据表示 1.1 实验概述 实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验目标:加深对数据二进制编码表示的了解。 实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。 实验语言:c。 实验环境:linux 1.2 实验内容 需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。 1)位操作 表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。 你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。 表1 位操作题目列表

2)补码运算 表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。 表2 补码运算题目列表 3)浮点数操作 表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。 表3 浮点数操作题目列表

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

华中科技大学80X86汇编语言程序设计试卷Word版

《汇编语言程序设计》网络学院模拟试卷一2004.4班级________________ 姓名______________ 学号______________ 成绩______ 一、改错题(10分,每题1分,在错误处划线,线下写上正确答案) 1. SHR BH, 8 2. ADD [BX], –15 3. LEA POINT, BUF 4. IN DX, 200 5. PUSH DH 6. MUL 25 7. XLAT BX, TAB 8. REPNZ MOVSW 9. MOV AX, 2[SI][DI] 10. MOV [BX], [SI] 二、单选题(20分,每题1分) 1.MOV指令的特点是________。 A.影响DF B.影响SF C.影响CF D.不影响标志位2.使用寄存器间接寻址方式访问堆栈中某变量时,要选用________寄存器。 A.BX B.BP C.SI D.SP 3.8086标志寄存器中的三个控制标志是________。 A. IF、PF、SF B.DF、OF、CF C.DF、IF、TF D.TF、AF、IF 4.若有符号数运算的结果溢出,则置________为1。 A.OF B.CF C.SF D.IF 5.若某存贮器操作数的偏移地址在SI中,访问该操作数应采用________寻址方式。 A.立即B.寄存器C.寄存器问址D.直接 6.串操作指令中,目的串的逻辑地址应为________。 A.DS:[SI] B.DS:[DI] C.ES:[DI] D.ES:[SI] 7.不在本模块定义而在本模块中引用的符号称________符号。 A.公共B.局部C.自定义D.外部 8.若(CL)= 4,(AX)=0FF0FH,执行语句“ROR AX, CL”后,(AX)=________。 A.0FFFFH B.0FFF0H C.0F0FFH D.0FFFH 9.已知AL中存放着一个压缩BCD码,为实现AL减1操作,应选用________指令序列。 A.DEC AL B.SBB AL,0 C.SUB AL,1 D.SUB AL,1 AAS DAS AAS DAS 10.要将BL中的8位数据送到1234H端口号的外部设备中去,应选用________指令序列。 A.OUT 1234H, BL B.MOV DX,1234H OUT DX, BL C.MOV AL, BL D.MOV DX,1234H MOV DX,1234H MOV AL, BL OUT DX,AL OUT AL, DX 11.已知AX,BX中均为有符号 ...数据,当进行字.除法时,应采用________指令序列。 A.XOR DX,DX B.CBW C.IDIV BX D.CWD

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

华中科技大学汇编实验报告2

课程实验报告 课程名称:汇编语言程序设计实验 实验名称:实验二分支程序、循环程序的设计 实验时间:2016-3-29,14:00-17:30 实验地点:南一楼804室63号实验台 指导教师:张勇专业班级:计算机科学与技术201409班 学号:U201414813姓名:唐礼威 同组学生:无报告日期:2016年3月30日 原创性声明 本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。 特此声明! 学生签名: 日期: 成绩评定 指导教师签字: 日期:

目录 1实验目的与要求 (1) 2实验内容 (1) 3实验过程 (2) 3.1任务1 (2) 3.1.1设计思想及存储单元分配 (2) 3.1.2流程图 (3) 3.1.3源程序 (3) 3.1.4实验步骤 (6) 3.1.5实验记录 (7) 4体会 (8) 参考文献 (9)

1实验目的与要求 1、熟悉分支、循环程序的结构及控制方法,掌握分支、循环程序的调试方法; 2、加深对转移指令及一些常用的汇编指令的理解; 3、加深对常用DOS功能调用指令的理解,进一步熟悉TD的使用。 2实验内容 设计实现一个学生成绩查询的程序。 1、实验背景 在以BUF为首址的字节数据存储区中,存放着n个学生的课程成绩表(百分制),每个学生的相关信息包括:姓名(占10个字节,结束符为数值0),语文成绩(1个字节),数学成绩(1个字节),英语成绩(1个字节),平均成绩(1个字节)。 例如: N EQU 1000 BUF DB ‘zhangsan’,0,0 ;学生姓名,不足10个字节的部分用0填充 DB 100, 85, 80,? ; 平均成绩还未计算 DB ‘lisi’,6 DUP(0) DB 80, 100, 70,? DB N-3 DUP( ‘TempValue’,0,80,90,95,?) ;除了3个已经具体定义了学生信息的 成绩表以外,其他学生的信息暂时假 定为一样的。 DB ‘wangwu’,0,0,0,0 DB 85, 85, 100, ? 2、功能一:提示并输入学生姓名 (1)使用9号DOS系统功能调用,提示用户输入学生姓名。 (2)使用10号DOS系统功能调用,输入学生姓名。输入的姓名字符串放在以in_name为首址的存储区中。 (3)若只是输入了回车,则回到“(1)”处重新提示与输入;若仅仅输入字符q,则程序退出,否则,准备进入下一步处理。 3、功能二:以学生姓名查询有无该学生 (1)使用循环程序结构,在成绩表中查找该学生。

汇编语言程序设计实验篇emu

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.wendangku.net/doc/6b15962115.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。 在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

实验一 基于Matlab的数字信号处理基本

实验一 基于Matlab 的数字信号处理基本操作 一、 实验目的:学会运用MA TLAB 表示的常用离散时间信号;学会运用MA TLAB 实现离 散时间信号的基本运算。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容: (一) 离散时间信号在MATLAB 中的表示 离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。 离散时间信号的波形绘制在MATLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MATLAB 中矩阵元素的个数有限,所以MA TLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。 1. 单位取样序列 单位取样序列)(n δ,也称为单位冲激序列,定义为 ) 0() 0(0 1)(≠=?? ?=n n n δ 要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即 function y=impDT(n) y=(n==0); %当参数为0时冲激为1,否则为0 调用该函数时n 必须为整数或整数向量。 【实例1-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MATLAB 源程序为 >>n=-3:3; >>x=impDT(n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1]) 程序运行结果如图1-1所示。 图1-1 单位冲激序列

数字信号处理基础实验报告_

本科生实验报告 实验课程数字信号处理基础 学院名称地球物理学院 专业名称地球物理学 学生姓名 学生学号 指导教师王山山 实验地点5417 实验成绩 二〇一四年十一月二〇一四年十二月

填写说明 1、适用于本科生所有的实验报告(印制实验报告册除外); 2、专业填写为专业全称,有专业方向的用小括号标明; 3、格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm, 左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一生成离散信号并计算其振幅谱 并将信号进行奇偶分解 一、实验原理 单位脉冲响应h(t)=exp(-a*t*t)*sin(2*3.14*f*t)进行离散抽样,分别得到t=0.002s,0.009s,0.011s采样的结果。用Excel软件绘图显示计算结果。并将信号进行奇偶分解,分别得到奇对称信号h(n)-h(-n)与偶对称信号h(n)+h(-n)。用Excel 软件绘图显示计算结果。 二、实验程序代码 (1)离散抽样 double a,t; a=2*f*f*log(m); int i; for(i=0;i

华中科技大学汇编语言程序设计试卷

华中科技大学计算机科学与技术二学位 《80X86汇编语言程序设计》试卷样例 考试时间:2011年7月2日(第19周周六)下午14:30-17:00 考试地点:西十二教学楼(S402-0904,S403-0905,S404-0906)班级学号姓名 一、单项选择填空:(共10 分,每小题1 分) (1) 指令“MOV AX, ES:[BP]”中的源操作数在当前_________中。(B) A. 数据段 B. 附加数据段 C. 堆栈段 D. 代码段 (2) 将AL中的无符号数压入堆栈,下面的方法不正确的是_________。(A) (A) CBW PUSH AX (B) MOV AH,0 PUSH AX (C) MOVZX AX, AL PUSH AX (D) XOR AH, AH PUSH AX (3) 只有寄存器_________能作基址和变址寄存器。(C) (A) AX、BX、CX、DX (B) SI、DI、BP、SP (C) BX、SI、DI、BP (D) AX、CX、SI、DI (4) 两负数相加,结果为正,则标志位_________均为1.(D) (A) ZF、SF、CF、DF (B) ZF、CF、DF (C) SF、CF、OF

(D) CF、OF (5) 指令"ADD [BX], 2"的错误原因为________.(B) (A) 源操作数和目的操作数不能同时为存贮器操作数. (B) 两个操作数类型模糊 (C) 源操作数不能为立即方式 (D) BX不能用于寄存器间接方式 (6) 已知源操作数在堆栈段,语句“MOV AX,[BP+BX]存在语法错误,现改正为以下四种形式,但只有________是正确的。(C) (A) MOV AX,SS:[BP+BX] (B) MOV WORD PTR [DI],[BP] (C) MOV AX,SS:[BX+SI] (当基址寄存器BR=BX时,系统默认操作数在DS中) (D) MOV AX,[BX+DI] (当基址寄存器BR=BP时,系统默认操作数在SS中) (7) 设V AR 为字变量, A为符号常量,下面四个语句中有一个错误的,这个错误语句是________.(C) (A) MOV V AR , A (B) MOV AX , V AR (C) MOV A , AX (D) MOV AX, A (8) 在使用除法指令作字除法时,被除数应放在寄存器________中。(C) (A) BX和AX (B) CX和AX (C) DX和AX (D) AX (9) 在下列数据段中,(A+2)和TT的值各为________。(B) DATA SEGMENT A DW 10,20,30 TT =$-A B DB 2 DUP(0) DATA ENDS (A) 30,6 (B) 20,6 (C) 30,3 (D) 20,3 (10) 已知(AX)=a,(BX)=b,a、b均为无符号数,请选择合适的转移指令,使得(AX)>(BX) 时转L处执行。(A) CMP AX,BX _______ L (A) JA (B) JB (C) JG (D) JL

数字信号处理基础实验报告 (2)

成都理工大学 《信号处理基础》实验 开设时间:2013—2014学年第2学期

题目1:信号的产生和显示 一、实验目的: 认识基本信号 通过使用MATLAB 设计简单程序, 掌握对MATLAB 的基本使用方法 二、实验原理: 找出下列表达式的信号与:正弦信号、最小相位信号、最大相位信号、零相位信号的对应关系。 1、sin60t 2、e-60t sin60t 3、(1- e-60t)sin60t 4、e60t sin60t 三、实验内容: 产生上述信号的信号并显示 (1)t=[-pi/30:0.001:pi/30]; f=sin(60*t); plot(t,f) 产生图形如下:

(2)t=[0:0.001:pi/30]; f=exp(-60*t).*sin(60*t); plot(t,f) 产生图形如下:

(3)t=[-5*pi/30:0.001:5*pi/30]; f=(1-exp(-60*t)).*sin(60*t); plot(t,f) 产生图形如下: (4) t=[-pi/30:0.001:pi/30]; f=exp(6*t).*sin(60*t); plot(t,f) 产生如下波形:

四、实验结果与讨论: 讨论上述信号的特点 从第一个波形图可以看出,它的波形与正弦函数sin(t)的相像,只是相位上有改变,是一个正弦信号。最大相位信号的能量集中在后面,最小相位能量集中在前面,所以第二个是一个最小相位,第四个是一个最大相位信号。第三个由于波形在t>0时没有,所以是一个零相位信号。 题目2:频谱分析与显示 一、实验目的 初步认识频谱分析

数字信号处理上机实验答案完整版

数字信号处理上机实验 答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

第十章上机实验 数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。 实验一系统响应及系统稳定性。 实验二时域采样与频域采样。 实验三用FFT对信号作频谱分析。 实验四 IIR数字滤波器设计及软件实现。 实验五 FIR数字滤波器设计与软件实现 实验六应用实验——数字信号处理在双音多频拨号系统中的应用 任课教师根据教学进度,安排学生上机进行实验。建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR数字滤波器设计及软件实现在。学习完第六章进行;实验五在学习完第七章后进行。实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。 functiontstem(xn,yn) %时域序列绘图函数 %xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) n=0:length(xn)-1; stem(n,xn,'.');boxon xlabel('n');ylabel(yn); axis([0,n(end),min(xn),*max(xn)]) 实验一: 系统响应及系统稳定性 1.实验目的 (1)掌握求系统响应的方法。 (2)掌握时域离散系统的时域特性。 (3)分析、观察及检验系统的稳定性。 2.实验原理与方法 在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。也可

华中科技大学汇编实验报告6

华中科技大学汇编实验报告6

课程实验报告 课程名称:汇编语言程序设计实验 实验名称:实验六输入输出与中断处理程序设计 实验时间: 2016-4-26,14:00-17:30 实验地点:南一楼804室74号实验台 指导教师:张勇专业班级:计算机科学与技术201409班学号:U201414813 姓名:唐礼威 同组学生:无报告日期:2016年 5 月2日 原创性声明 本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。 特此声明! 学生签名: 日期: 成绩评定

指导教师签字: 日期:

目录 1实验目的与要求 (3) 2实验内容 (3) 3实验过程 (4) 3.1任务1 (4) 3.1.1设计思想及存储单元分配 (4) 3.1.2流程图 (4) 3.1.3源程序 (4) 3.1.4实验步骤 (6) 3.1.5实验记录 (7) 3.2任务2 (7) 3.2.1设计思想及存储单元分配 (7) 3.2.2流程图 (9) 3.2.3源程序 (9) 3.2.4实验步骤 (12) 3.2.5实验记录 (12) 3.3任务3 (14) 3.3.1设计思想及存储单元分配 (14) 3.3.2流程图 (14) 3.3.3源程序 (14) 3.3.4实验步骤 (17) 3.3.5实验记录 (17) 4体会 (18) 参考文献 (19)

1实验目的与要求 (1) 掌握中断矢量表的概念; (2)熟悉I/O访问,BIOS功能调用方法; (3) 掌握实方式下中断处理程序的编制与调试方法。 2实验内容 任务1:用三种方式获取中断类型码10H对应的中断处理程序的入口地址。 要求:首先要进入虚拟机状态,然后 (1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息。 (2)编写程序,用DOS系统功能调用方式获取,观察功能调用相应的出口参数与“(1)”看到的结果是否相同(使用TD观看出口参数即可)。 (3)编写程序,直接读取相应内存单元,观察读到的数据与“(1)”看到的结果是否相同(使用TD观看程序的执行结果即可)。 任务2:编写一个接管键盘中断的中断服务程序并驻留内存,要求在程序返回DOS 操作系统后,键盘的按键A变成了按键B,而B变成了A。 要求: (1)在DOS虚拟机或DOS窗口下执行程序,中断服务程序驻留内存。 (2)在DOS命令行下按键A,屏幕显示为B,按B时屏幕显示为A。执行TD,在代码区输入指令“MOV AX,0”看是否能发生变化。 (3)选作:另外编写一个中断服务程序的卸载程序,将键盘中断服务程序恢复到原来的状态(也就是还原中断矢量表的信息)。 任务3:读取CMOS内指定单元的信息,按照16进制形式显示在屏幕上。 要求:

汇编语言程序设计

《汇编语言程序设计》课程教学大纲 学时:32 学分:2 理论学时:24 实验学时:8 面向专业:电科、电信、通信课程代码:B2700009 先开课程:C语言程序设计课程性质:必修 执笔人:王艳春审定人:陈龙猛、张金政 第一部分:理论教学部分 一、说明 1、课程的性质、地位和任务 本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。 2、课程教学和教改基本要求 课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。学习这门课程,应达到以下几个要求: ①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧; ②具有阅读,分析汇编语言程序的能力; ③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行 过程及debug工具的调试手段。

汇编语言程序设计实验内容(川大微机原理实验资料和内容以及MASM使用方法)

第一部分汇编语言程序设计 实验一熟悉、使用DEBUG调试工具 一.上机目的: 1.了解并逐步熟悉汇编语言的编辑方法及特点. 2.复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。 3.掌握汇编语言的编辑、汇编及连接的过程。 4.了解并逐步掌握运用DEBUG进行调试汇编语言程序。 二.实验内容: 1.运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 2.运用MASM﹒EXE文件进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ 文件。 3.运用LINK.EXE文件进行连接,形成*.EXE文件。 4.仔细阅读附录中的DEBUG部分,掌握各种命令的所有方法。 5.运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 6.再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG 的设置断点,单步执行等功能发现错误所在并加以改正。 程序清单: 多字节非压缩型BCD数除法(88754/6=14792) DA TA SEGMENT A D B 8,8,7,5,4 B DB 6 C DB 5DUP (0) N EQU 5 DA TA ENDS CODE SEGMENT ASSUME CS:CODE;DS:DATA;ES:DATA, START MOV AX,DA TA MOV DS,AX MOV ES,AX CLD LEA SI,A LEB DI,C MOV CX,N MOV AH,0 LP1:LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C

相关文档
相关文档 最新文档