微机原理与接口技术软件实验指导书Word文档格式.docx
- 文档编号:22337228
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:34
- 大小:246.08KB
微机原理与接口技术软件实验指导书Word文档格式.docx
《微机原理与接口技术软件实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术软件实验指导书Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
2.编译
UltraEdit菜单栏-》高级-》masm编译(或Tasm编译)
此菜单会调用masm.exe或tasm.exe,输出结果放在当前编辑屏幕的下方。
3.链接
UltraEdit菜单栏-》高级-》Link链接(或Tlink链接)
此菜单会调用Link.exe(ml.exe)或tlink.exe,输出结果也放在当前编辑屏幕的下方。
4.调试
UltraEdit菜单栏-》高级-》Td调试
此菜单会新开一个dos窗口,在其中运行td.exe,可利用单步跟踪和设置断点等方式进行调试,调试完毕,ALT+X退出Td环境,exit返回即可。
另:
DOS窗口模式与全屏模式的切换键:
Alt+Enter
调试最好在全屏模式下。
五.实验习题:
1.输入以下程序,完成由编辑、编译、链接到调试的全过程。
在调试过程中应使用单步跟踪、断点等方法调试,注意观察寄存器、标志位和有关存储器内容
的变化。
A.将S1(BYTE),S2(WORD)和S3(DWORD)中内容送至D1,D2,D3
注意:
以下程序有误,在调试过程中加以修改使之正确
DATASEGMENT
SS1DB1234H
SS2DWEA32H
SS3DD12345678H
DD1DB0
DD2DW?
DD3DW?
DATEENDS
CODESEGMEMT
ASUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,SS1
MOVDD1,AL
LEASI,SS2
LEADI,DD
MOVAX,[SI]
MOV[DI],AX
MOVSI,OFFSETS3
MOVDI,OFFSETD3
MOVD3,AX
INCSI
INCDI
MOVAX,4C00H;
返回系统
INT21H
CODE ENDS
ENDSSTRAT
B.完成两个长整数相加的汇编程序
要求:
调试过程中应更改必要的参数值,以验证程序的正确性,例如本题可修改加数和被加数
以判别最高位进位处理是否正确。
并将该程序修改为减法操作重新调试。
NUMBEREQU6
BUFFER1DB12H,0E2H,33H,43H,12H
BUFFER2DB22H,0A2H,55H,0F2H,3FH
RESULTDBNUMBERDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
MOVAX,DATA
MOVCX,NUMBER-1
MOVSI,OFFSETBUFFER1;
被加数指针
MOVDI,OFFSETBUFFER2;
加数指针
LEABX,RESULT;
和指针
XORAX,AX;
清CF标志
NEXT:
MOVAL,[SI]
ADCAL,[DI];
带进位相加
MOVBYTEPTR[BX],AL;
保存部分和
INCSI;
变动指针
INCBX
LOOPNEXT;
循环控制
ADCAH,0;
最高位进位
MOVBYTEPTR[BX],AH
CODEENDS
ENDSTART
C.完成数据块的移动,并利用TD观察内存中数据移动过程。
DS_DATA SEGMENT
BUFFER1DB0,1,2,3,4,5,6,7,8,9
DS_DATA ENDS
ES_DATA SEGMENT
RESULTDB10DUP(?
ES_DATA ENDS
MY_CODESEGMENT
MY_CODE,DS:
DS_DATA,ES:
ES_DATA
MOVAX,DS_DATA
MOVAX,ES_DATA
MOVES,AX
MOVSI,OFFSETBUFFER1
MOVDI,OFFSETRESULT
MOVCX,10
REPMOVSB
MOVAX,4C00H
MY_CODEENDS
2.在汇编调试工具软件的环境下,完成下列指令的执行,注意选取有代表性的数据,并观察指
令执行前后的数值变化:
例如:
观察MOVAX,BX指令
在TD或DEBUG下将AX,BX分别置不同的值,写入MOVAX,BX指令然后执行,再观察AX,BX
寄存器的内容。
A.XCHG
B.XLAT
C.LDS和LES
D.MUL和IMUL
E.CBW和CWD分正数和负的情况
F.移位和循环指令
实验二简单汇编程序设计
1.掌握简单程序的设计和调试方法
2.利用汇编调试工具加深对机器指令和伪指令的了解
简单程序是构成复杂程序的基础。
简单程序又称顺序程序,顾名思意,就是为完成一简单的目的,采用一串指令序列,按顺序逐条执行。
在简单程序执行过程中,每条指令只执行一次,同时由于没有转移,一般不考虑对标志的影响。
象所有汇编程序设计一样,编程前,应考虑如何分配CPU中的寄存器和内存中单元等,要考虑到指令本身的特点和要求分配寄存器,例如,如果希望使用乘法指令进行乘法,根据指令的要求,必须要使用AL或AX作为被乘数,在这种情况下,AL或AX就必须考虑为存放被乘数,当然,乘积应该是放在AX或DX:
AX中。
1.掌握汇编程序的基本结构及设计方法,包括:
A汇编语言源程序结构
B基于汇编级的解题算法
C寄存器和存储器的内容分配
D简单汇编程序的设计
E返回系统的方法
2.掌握对自编程序的调试及出错修改的方法,包括:
A汇编程序的编辑、编译、链接及调试
B在调试程序过程中发现语法错误的处理方法
C在调试程序过程中如何发现逻辑错误及处理方法
3.利用调试工具软件对课堂中讲授的机器指令、伪指令、操作符、运算符等内容加深了解
例1.在屏幕上输出字符串"
Hellotheworld!
"
代码如下:
BUFFERDB'
'
0DH,0AH,'
$'
MOVAX,DATA
LEADX,BUFFER
MOVAH,9
五.实验习题:
1.用多种寻址方式将数据段中定义的A1(字),A2(字),A3(双字)的数据分别送至附加段B1,B2,B3单元。
2.将A中的大写英文字母转换成相应的小写字母。
例:
A:
45H('
E'
)→65H('
e'
3.将A中数据(<
=9)的平方存至B中。
6→B:
24H(36)
4.将一个压缩的BCD数转换成相应的ASCII码。
56H→35H('
5'
),36H('
6'
)
5.有一种加密方法是首先在被加密的所有符号中建立其一一对应的符号,例如:
0-2,1-7,2-1,3-6,4-9
5-0,6-8,7-3,8-4,9-5
然后将数据进行变换后存储,即当源数是6时,保存的数据是8,这样就可以达到保密的效果。
试编一程序完成十六进制数的加密和解密程序。
6.完成分别将两个压缩BCD数据和非压缩BCD数据相加的程序(加数和被加数及和小于9999)。
7.完成两个32位数的乘法程序。
例:
01234567H*89ABCDEFH=9CA39DC94E4629H(选做)
8.利用串操作指令完成两串数据的比较,结果用RESULT单元为00H和0FFH表示相同或不相同。
String1:
ABC,String2:
ABC则RESULT:
00H
ADC则RESULT:
0FFH
9.利用串操作指令统计以"
$"
(ASCII码为24H)为结束的字符串中字符的个数。
String:
STUDY$则RESULT:
5
10.按本实验要求,自编一程序。
实验三汇编分支程序设计
掌握分支程序设计和调试方法
分支程序的基本设计方法包括:
1.掌握利用条件转移指令方法
2.了解利用跳转表方法
3.了解利用逻辑尺方法
分支结构是程序设计的基本结构,它们在执行过程中,或直接更改或通过对标志的判别,实现更改程序按顺序执行的次序,这些更改是通过对IP(段内)或CS:
IP(段间)的修改完成的,而实现对这些寄存器的修改是通过无条件转移和有条件转移完成的。
1.无条件转移
无条件转移采用的是无条件转移指令,即JMP类指令,在8086汇编中,JMP类指令根据需要转移的目的不同,分成短JMP(SHORT),段内JMP(NEAR)和段间JMP(FAR),其基本格式如下:
短跳转:
JMPTTT;
TTT在该跳转指令的±
127字节之内
段内跳转:
JMPTTT;
TTT是段内NEAR型定义的标号
JMPNEARPTRTTT
JMPCX;
利用寄存器中内容替换IP
JMPWORDPTR[BX];
利用内存中某字单元内容替换IP
段间跳转:
JMPFARPTRTTT;
TTT是FAR型标号
JMPDWORDPTR[BX];
利用内存中双字单元内容替换IP和CS
严格地说,SHORT跳转不是当前JMP指令的±
127字节之内,计算机实际操作过程是将该指令读入后的IP,即JMP当前地址加2后的IP与指令中八位的偏移量相加,然后替换IP,所以,若以JMP指令的位置为准的话,则是-126至+129之间。
SHORT和NEAR型一般由汇编时自动区分,应指出的是,条件转移采用的都是SHORT型,因此,当源和目的较远时(即超出SHORT范围),应在较近的位置设置一条JMP指令,以实现不同位置的跳转。
2.条件转移
条件判别指令是条件转移程序设计的基础,掌握指令如何对标志的影响及如何利用条件转移指令达到程序分支的目的。
如前所述,条件转移的跳转距离都是SHORT型。
对跳转的条件判别根据判别的条件分两类,一种是单条件的判别,另一种是复合条件的判别,对单条件判别,主要对单一的标志位进行测试,如判CF标志,判SF标志等,而复合条件则是对多标志位进行判别,其标志的影响一般是由数值运算后决定的,如带符号数大于等于的条件判别等。
尽管复合条件需多标志判别,但在8086指令助记符中与单条件转移指令没有区别。
单条件判别指令如下:
1.JC或JNC根据进位标志CF进行转移
2.JE/JZ或JNE/JNZ根据零标志ZF进行转移
3.JS或JNS根据符号标志SF进行转移
4.JO或JNO根据溢出标志OF进行转移
5.JP/JPE或JNP/JPO根据奇偶标志PF进行转移
根据操作数的不同,分无符号数和带符号数的判别,对无符号数有A(高于)B(低于),带符号数有G(大于)L(小于)等判别。
为了方便起见,其指令助记符对同一种条件可能有多种表示方法,如:
JGE与JNL的条件判别条件是相同的,使用者根据习惯和需要选取其中的一种表示。
无符号数判别指令如下:
1.JA/JNBE高于(不低于等于)转移
2.JAE/JNB高于等于(不低于)转移
3.JB/JNAE低于(不高于等于)转移
4.JBE/JNA低于等于(不高于)转移
带符号数判别指令如下:
1JG/JNLE大于(不小于等于)转移
2JGE/JNL大于等于(不小于)转移
3JL/JNGE小于(不大于等于)转移
4JLE/JNG小于等于(不大于)转移
3.分支程序设计
有条件转移程序是分支程序主要部分,这样的分支程序是根据当前运算的结果去判断选择不同的程序段执行,反之,如果要求是根据不同的情况,完成不同的任务,则需要使用分支程序结构来实现。
如上述,程序的分支是根据标志决定的,所以,如何影响标志及如何利用标志是分支程序的重点,例如,判断AX中内容是否是负数,我们可用多种方法实现:
方法一ANDAX,AX;
影响SF标志
JSMINCE;
为负数转入负数处理
.........
方法二CMPAX,0;
方法三TESTAX,8000H;
影响ZF标志
JNZMINCE;
方法四ADDAX,AX;
影响CF标志
JCMINCE;
方法五SHLAX,1;
还可以举出其它方法
由上例可以看出,同样的目的可用不同的方法去影响不同的标志,采用不同的跳转指令来实现,显然,要编好分支程序,首先应掌握指令对标志如何影响,这也是汇编程序设计的特点之一。
本实验中有输入和显示。
以下列出简单的字符输入和显示的程序,注意,它们都是以ASCII码方式体现的。
1.由键盘读入字符的程序:
MOVAH,01;
功能号
INT21H;
系统调用读入字符
MOVINPUT_CHAR,AL;
AL为输入的字符的ASCII码值
2.由屏幕显示字符的程序:
MOVAH,02H;
MOVDL,'
#'
;
DL:
显示字符的ASCII码
系统调用显示字符
例1.设计一数据块间的搬移程序。
设计思想:
程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。
源数据块和目的数据块在存储中可能有三种情况,如图所示
图1.3.1内存中源数据块和目的数据块的三种可能情况
对于两个数据块分离的情况,如图1.3.1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。
但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:
当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图1.3.1(b)所示。
当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1.3.1(c)所示。
实验程序流程图如图所示
实验程序清单:
SSTACKSEGMENTSTACK
DW64DUP(?
SSTACKENDS
CODE
MOVCX,0010H
MOVSI,3100H
MOVDI,3200H
CMPSI,DI
JAA2
ADDSI,CX
ADDDI,CX
DECSI
DECDI
A1:
MOVAL,[SI]
MOV[DI],AL
DECCX
JNEA1
JMPA3
A2:
JNEA2
A3:
1.将一个字节的十六进制数转换成对应的ASCII码。
3EH→33H('
3'
),4EH('
2.编写可接受10个键盘命令(A,B...J),完成分别转向P1,P2,….P10的程序。
P1,P2,...P10程序用P1,P2,...P10显示表示。
3.将10个十六位带符号数中正数相加。
3543H,5943H,-3578H,-3432H,4523H,3323H,-5634H,54EFH,-5423H,7230H
则1CDEBH
注:
部分分支程序习题与循环程序习题合并附于循环程序设计实验习题中
课堂练习
找出内存单元中最高位为1的无符号数输出。
例:
定义12H,34H,56H,78H,90H输出90H
可输出到寄存器或存储单元中
实验四汇编循环程序设计
掌握循环程序的设计和调试方法
掌握循环程序的基本结构及设计方法,包括:
A循环程序的循环初始化、循环体及循环控制条件
B多种循环控制条件
C循环体中的指针变化
了解多重循环程序的设计方法
PC机一台
例1.将AX中16进制数转换为10进制数输出
如AX=47EH输出1150
其流程图如下:
程序如下:
MOVAX,47EH
MOVCX,0
MOVBX,10
DISP1:
MOVDX,0
DIVBX
PUSHDX
INCCX
ORAX,AX
JNEDISP1
DISP2:
POPDX
MOVAH,2
ADDDL,30H
LOOPDISP2
5.实验习题:
1.编写在一串数据中统计正数,负数和零的个数并加以显示。
34H,-3BH,-5AH,72H,0,-2DH,0,66H
则正数:
3,负数:
3,零:
2
2.统计某十六位数中"
1"
的个数并加以显示。
0101001100101110B则8
3.一种数值滤波的方法是将相邻的两数求平均值,试编程序实现。
4.将字符串1插入字符串2的中间,其位置由键盘输入。
5.在一已排序的数组中插入新的数据,插入新数据后的数组仍满足排序要求。
6.编写一串在带符号数中找出最大数和最小数的程序。
35H,32H,73H,10H,08H,0FH,2AH,3BH则:
最大数73H最小数08H
7.统计一组数据(BYTE)中D3D2D1位相同的个数并加以显示。
8.编写一程序完成无符号数的排序程序(由大到小)。
34H,67H,0E2H,0A7H,89H,73H,51H,43H,0E2H,0A7H,89H,73H,67H,51H,43H,34H
9.自编题
实验五简单DOS和BIOS调用汇编程序设计
掌握简单DOS系统功能和BIOS的调用方法
1.掌握DOS系统功能调用方法
A.了解DOS系统调用所完成的功能
B.掌握如何根据题目要求利用系统调用完成所需的功能
C.掌握系统调用的方法,包括入口参数设置,功能号设置,系统调用和出口参数获得
2.掌握BIOS调用方法
BIOS和DOS是两组系统服务软件集合,它们使用户能够访问和使用PC机的硬件,也可以这么说,对一个汇编程序编程者来说,如果要使用PC机硬件的话,一般是采用BIOS和DOS调用来实现。
在使用MS-DOS的PC机上使用硬件的基本方法有以下三种:
1.直接访问硬件
使用PC机硬件资源最直接的方法是通过编写使用IN和OUT指令程序来实现,编写直接访问硬件的程序需要编程者对所使用硬件的控制非常熟悉,包括口地址,控制命令,硬件结构等,这些,对一般的编程者来说,要掌握是有一定难度的,同样,即使是编程者掌握了必要的硬件知识,但由于直接访问所要考虑的因素较多,也会使编写的程序相当繁杂,增加了调试程序的困难,另一方面,编程者按自己的要求设置硬件的工作方式,有可能会影响整个系统的运行,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 软件 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)