微机原理与接口技术实验指导书.doc

上传人:仙人指路1688 文档编号:2881982 上传时间:2023-03-01 格式:DOC 页数:36 大小:465KB
返回 下载 相关 举报
微机原理与接口技术实验指导书.doc_第1页
第1页 / 共36页
微机原理与接口技术实验指导书.doc_第2页
第2页 / 共36页
微机原理与接口技术实验指导书.doc_第3页
第3页 / 共36页
微机原理与接口技术实验指导书.doc_第4页
第4页 / 共36页
微机原理与接口技术实验指导书.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《微机原理与接口技术实验指导书.doc》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验指导书.doc(36页珍藏版)》请在三一办公上搜索。

1、实验一 软件基础(1)报告手写一 、实验目的 1、学习使用CodeView调试运行汇编语言程序。 2、学习指令代码及其分段结构与寻址方式。 3、学习数据传送指令。二 、实验仪器及设备 1、MASM6.11宏汇编软件一套 2、微型计算机一台三 、实验内容 1、在CodeView的Command窗口中,用A命令汇编习题1.1的指令,直接在显示窗口中观察各条指令的反汇编结果并作记录。 2、用A命令汇编习题1.2的指令,用T命令跟踪每一条指令,观察每条指令的执行情况并作记录。 3、调试习题1.3的程序。 提示:操作开始前,先用N命令设置调试命令所用参数的缺省数制。四、示例 设计说明程序名 DISP程序

2、功能 在屏幕上分别显示数字3和4对应的阿拉伯符号算法说明 用两次02号系统功能调用,预先将3和4送入DL程序框图 图8.1源程序:DISP:MOV DL,33H MOV AH,02H INT 21H MOV DL,34H MOV AH,02H INT 21H INT 20H调试说明:系统功能调用指令INT 21H和INT 20H不能用T命令跟踪,可以用G命令加上地址范围的方式执行。* * * CodeView调试程序举例 * * * 1、进入CodeView调试环境方法一:、点击操作系统桌面的PWB快捷图标进入 PWB主界面,在菜单File下选中Dos Shell项进入Dos环境;、在目录MA

3、SM611BIN下键入指令: CV *.EXE(该目录下任何一个EXE文件均可),启动CodeView,在该环境下对所调入的EXE文件进行修改与调试。 方法二:、从桌面的开始菜单进入Dos环境,转入MASM611BIN目录下;、 键入指令: CV *.EXE,启动CodeView。 图8.2是CodeView的窗口调试界面的图例:1、 以下各操作命令均在CodeView调试界面的Command窗口中以命令行的方式键入,用来对EXE文件进行修改与调试。g 设置基数n16 说明:N为基数设置命令,用来设置调试命令所用参数的缺省数制(但N命令不会改变数据的显示方式)。g 输入新的指令a 说明:A为汇

4、编命令,将用户输入的符号指令汇编为机器代码,存入指定地址开始的内存单元。194E:0000 mov dl,33 机器码:B233194E:0002 mov ah,2 机器码:B402(显示dl输出,33是ASCII编码)194E:0004 int 21 机器码:CD21194E:0006 mov dl,34194E:0008 mov ah,2194E:000A int 21194E:000C int 20194E:000E nop194E:000F g 连续运行前三条指令g 6 (6代表偏移地址) 说明:G为运行命令,从当前CS:IP所指的指令(即mov dl,33)开始,一直执行到指定地址(

5、即194E:0006)。g 查看前三条指令的执行结果按F4在Dos界面下可以看到程序的执行结果,按Esc键返回调试界面g 单步执行第4条指令t 说明:T为跟踪命令,从当前CS:IP所指指令开始单步执行,若遇到CALL或INT指令(DOS系统调用INT21H和INT20H除外),则会跟踪进入相应过程或中断服务程序的内部。T命令为顺序跟踪,改变顺序时应输入起始地址。g 观察寄存器中的内容r 说明:R命令用以显示和修改寄存器的值,还可以显示8个标志位的值。如果只显示某一个寄存器内容,则在R后面加寄存器名,例如:r dxDX 0034rip 修改ip的地址(ds,cs也可修改)g 单步执行第5条指令t

6、g 观察寄存器AH中的内容r ahAH 02:g 连续运行(INT 20返回)gProcess 0x193D terminated normally (52)g 查看执行结果同样,按F4可以看到程序的执行结果,按Esc键返回调试界面。1 以下是在显示窗口看到的反汇编信息(指令地址) (机器码) ( 助 记 符 )194E:0000 B233MOVDL,33 194E:0002 B402MOVAH,02 194E:0004 CD21INT21 194E:0006 B234MOVDL,34 194E:0008 B402MOVAH,02 194E:000A CD21INT21 194E:000C C

7、D20INT20 194E:000E 90NOP 194E:000F BB1000MOVBX,0010 1 以下是在寄存器窗口看到的内容AX=0234BX=0000CX=0000DX=0034SP=0000BP=0000SI=0000DI=0000DS=193DES=193DSS=194DCS=194EIP=000EFL=3202NV UP EI PLNZ NA PO NCL说明:L命令使由CV *.EXE命令调入的程序重新开始执行,之前对代码或数据所做的任何修改均将丢失。g 重新键入5条指令a194E:0000 mov dl,33194E:0002 mov ah,2194E:0004 int

8、 21194E:0006 int 20194E:0008 nop194E:0009 g 内存单元的显示与修改md cs:0 cs:8 说明:MD为内存显示命令,用来显示指定内存单元的值。194E:0000 B2 33 B4 02 CD 21 CD 20 90 .3.!. .me cs:1 说明:ME为内存修改命令,用来设置指定内存单元的值。194E:0001 33 (能直接修改194E:0001的值)3. 36 (能直接修改194E:0003的值)g 8Process 0x193D terminated normally (54)md cs:0 cs:8194E:0000 B2 36 B4 0

9、2 CD 21 CD 20 90 .6.!. .注:对比修改前后内存单元CS:0001中数值,可以看到已经把33H修改为36H。g 在程序中插入指令的操作La0 说明:从CS:0000开始汇编指令。194E:0000 mov dl,33194E:0002 mov ah,2194E:0004 int 21194E:0006 int 20194E:0008 nop194E:0009 g 内存内容的复制或传送mm cs:6 cs:8 cs:9 说明:MM为内存传送命令,用来将一个内存区的数据或代码传送到另一个内存区。1 从显示窗口可以看到传送以后的结果194E:0000B233MOVDL,33 19

10、4E:0002B402MOVAH,02 194E:0004CD21INT21 194E:0006CD20INT20 194E:000890NOP 194E:0009CD20INT20 194E:000B90NOP 194E:000DD252BBRCLBYTE PTR BP+SI-45,CL a6 说明:从CS:0006处开始汇编指令。194E:0006mov cx,f194E:0009 1 以下是在显示窗口中看到的插入指令以后代码段的情况194E:0000B233MOVDL,33 194E:0002B402MOVAH,02 194E:0004CD21INT21 194E:0006B90F00M

11、OVCX,000F194E:0009CD20INT20 194E:000B90NOP 194E:000C32D2XORDL,DL 五 、上机调试的习题8.1 分别以二进制数形式和十六进制数形式写出以下指令的机器码,并在二进制数表示的机器码中标明其各个组成部分及其含义。 MOV AX,DX ADD CX,BX+8 SUB BX+SI,SI MOV AL,DL ADD CX,BX SBB DI,AL 8.2已知从2000H:7358H开始的4个 MOV AX,2000H 存储单元的内容顺序为: MOV DS,AX 36H 85H 43H 21H MOV DI,7348H 写出题中各指令的寻址方式及

12、各指令的 MOV AL,10H DI 执行结果。 MOV SS,DI+10H LEA BX,DI+10H LES CX,10H+DI 8.3已知DS=2000H,欲将2000H:7348H与2000H:735AH的内容互换。写出三个不同的程序段,分别用通用数据传送指令,交换指令及堆栈操作指令完成互换操作。 提示:题中的已知条件可用CodeView的MF命令、R命令直接写入相应的内存单元或寄存器。六 、预习要求1、熟悉CodeView调试环境和常用的调试命令。 2、预习报告: CPU内部寄存器的名称及其作用。 各种寻址方式,指令代码的分段结构。 数据传送指令。七 、实验报告 1、分析习题8.1中

13、每一条指令的字段结构与寻址方式。 示例 89D0 MOV AX,DX 100010 0 1 11 010 000 源寄存器寻址 D W MOD R R/M 字 源 目的 目的寄存器寻址 2、分析习题8.2中每一条指令应该完成的操作及实际结果。 示例 MOV AX,2000 指令操作 立即数送入AX 执行结果 AX=2000 3、习题8.3 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案和测试结果。实验二 指令系统(算术运算指令)一 、实验目的1、 学习算术逻辑运算指令与堆栈操作指令。2、 学习标志寄存器的使用。3、 熟悉堆栈操作。4、 练习编写算术运算程序二 、实

14、验仪器及设备 1、MASM6.11宏汇编软件一套 2、微型计算机一台三 、实验内容1、 调试习题8.4的程序。2、 编写两位十进制数相加程序。被加数和加数均从键盘输入,相加结果在屏幕上显示。3、 编程提示:可参考使用示例中从键盘输入数据,显示数据及运算符号的有关程序段。四 、示例 两个一位十进制数相乘的程序EXA2在CodeView中观察并运行EXA2.EXE。C:MASM611BINCV EXA2.EXE1B06:0100 B23A MOV DL,3A1B06:0102 B402 MOV AH,021B06:0104 CD21 INT 21 ;显示 :1B06:0106 B401 MOV A

15、H,01 1B06:0108 CD21 INT 21 ;接收显示键入的数1B06:010A 240F AND AL,0F1B06:010C 88C3 MOV BL,AL ;转为BCD码送BL1B06:010F B22A MOV DL,2A 1B06:0110 B402 MOV AH,021B06:0112 CD21 INT 21 ;显示 *1B06:0114 B401 MOV AL,011B06:0116 CD21 INT 21 ;接收显示键入的数1B06:0118 240F AND AL,0F1B06:011A 88C7 MOV BH,AL ; 转为BCD码送BH1B06:011C B23D

16、 MOV DL,3D 1B06:011F B402 MOV AH,02 1B06:0120 CD21 INT 21 ;显示 =1B06:0122 88F8 MOV AL,BH1B06:0124 F6E3 MUL BL1B06:0126 D40A AAM ;两个十进制数相乘1B06:0128 88C3 MOV BL,AL ;乘积低位送BL1B06:012A 88E2 MOV DL,AH 1B06:012C 80C230 ADD DL,301B06:012F B402 MO AH,021B06:0131 CD21 INT 21 ;显示乘积高位1B06:0133 88DA MOV DL,BL1B06

17、:0135 80C230 ADD DL,30 1B06:0138 CD21 INT 21 ;显示乘积低位1B06:013A CD20 INT 20 ;返回DOS g 注:按F4切换到Dos界面,键入两个一位的十进制数,观察程序的执行结果,按Esc键返回调试界面。:8*9=72program terminated normally ;运行程序,8和9为键入数 q ;退出CodeViewC:MASM611BIN 说明:INT21在执行时改变AL的内容,因此在显示乘积高位之前,先将AL中的乘积低位送入BL。五 、上机调试的习题8.4写出下面程序段中每一条指令的执行结果,以及各程序段所实现的操作。(1

18、) SGWS: MOV AX,8514H MOV BX,3692H MOV CH,AH SUB AL,BL DAS XCHG AL,CH SBB AL,BH DAS MOV AH,AL MOV AL,CH (2) STMU: MOV CX,7A8FH MOV AX,6BC5H MOV BX,1000H MUL BX PUSH DX PUSH AX MOV AX,CX MUL BX POP CX MOV 3000H,CX POP CX ADD AX,CX MOV 3002H,AX ADC DX,00H MOV 3004H,DX六 、预习要求1、 熟悉算术逻辑运算指令的操作及其对标志寄存器的影响。

19、2、 预习报告 内容1:分析习题8.4的程序,说明每一段程序的算法及所实现的操作。按实验报告要求,设计调试方案。 内容2:编写加法程序,要求包括以下内容 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案。七 、实验报告内容1第一个程序段1、 填表以下指令之后AH AL BH BL CH CL CF(标志)SUB AL,BLDASSBB AL,BHDASMOV AL,CH2、 能否省去XCHG AL,CH指令,直接用SBB CH,BH对两个高位字节相减?3、 如果将SUB AL,BL 换为SBB AL,BL ,程序还应作哪些修改?4、 能否直接用16位数相减指令?为什

20、么?第二个程序段1、 讨论程序中进行的堆栈操作。2、 画图表示本段程序执行后堆栈指针、堆栈区及有关存储区的内容。 内容2 整理编写的加法程序,要求包括以下内容 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案和测试结果。 实验中遇到的主要问题,解决方法及其分析说明。实验三 指令系统(控制转移指令)与程序调试一 、实验目的1、 使用CodeView命令进行程序调试。2、 学习移位、转移、子程序调用与返回、堆栈操作指令。3、 学习状态标志与条件转移指令。4、 学习系统功能调用。5、 熟悉ASCII码表及振铃、回车、换行符的使用。二 、实验仪器及设备 1、MASM6.11

21、宏汇编软件一套 2、微型计算机一台三 、实验内容C:MASM611BINCV exa3.exe调试EXA3.EXE程序1、 运行程序EXEA3.EXE,记录运行时的键操作与对应的屏幕显示。2、 从程序开始处运行至第一个09号系统功能调用后,记录显示的字符及DS:0000开始的数据区的内容。3、继续执行至第一个02号系统功能调用后,记录显示的字符。 思考:为什么09号系统功能调用不能显示$字符?4、 将001B处的指令改为MOV DL,07H,重复2、3步骤,记录程序执行情况。5、 继续执行至第一个01号系统功能调用后,键入8,记录AX的内容。6、 用T命令逐条跟踪,直至转移到0029处(MOV

22、 AH,01),记录每次比较所产生的Z标志与C标志,以及转移方向。例如比较指令ZC条件转移后的指令地址:002D CMP AL,24NZNC0031(不转移):0031 CMP AL,0DNZNC003A (转移). 7、分别键入X,回车符,$,重复6的步骤,并作记录。8、继续运行程序至005B处,跟踪子程序调用、返回与堆栈操作指令,记录SP、IP及堆栈区的内容。 执行以下指令后SPIP堆栈1B40:0059 MOV AX,CX : CALL 0069 0040003E005B00691B3B:3E 5E00 :0069 PUSH BX : PUSH CX : PUSH DX : PUSH A

23、X :006F CALL 007A :0085 CALL 0091 :00A0 RET :008D CALL 0091 :00A0 RET :0090 RET :0072 POP AX :0073 CALL 007A :0090 RET :0075 POP DX : POP CX : POP BX : RET9、将00A1处子程序中输出的回车符改为换行符,从开始处运行程序,记录执行情况。10、同上,将换行符改为回车符。11、跟踪:0080 ROL DL,CL指令,记录DL,CL的变化情况。四 、EXA3.EXE程序的反汇编清单1B40:0000 B8321B MOV AX,1B321B40:0

24、003 8ED8 MOV DS,AX1B40:0005 8EC0 MOV ES,AX1B40:0007 B83B1B MOV AX,1B3B1B40:000A 8EDO MOV SS,AX1B40:000C BC4000 MOV SP,00401B40:000F BB0000 MOV BX,00001B40:0012 B409 MOV AH,091B40:0014 BA0000 MOV DX,00001B40:0017 CD21 INT 211B40:0019 B402 MOV AH,021B40:001B B224 MOV DL,24 1B40:001D CD21 INT 211B40:00

25、1F E87F00 CALL 00A11B40:0022 BE3700 MOV SI,00371B40:0025 33C9 XOR CX,CX1B40:0027 33DB XOR BX,BX1B40:0029 B401 MOV AH,011B40:002B CD21 INT 211B40:002D 3C24 CMP AL,241B40:002F 7419 JZ 004A1B40:0031 3C0D CMP AL,0D1B40:0033 7505 JNZ 003A1B40:0035 E86900 CALL 00A11B40:0038 EBEF JMP 00291B40:003A 3C30 CMP

26、 AL,301B40:003C 7204 JB 00421B40:003E 3C39 CMP AL,391B40:0040 7603 JBE 00451B40:0042 41 INC CX1B40:0043 EBE4 JMP 00291B40:0045 88OO MOV BX+SI,AL1B40:0047 43 INC BX1B40:0048 EBDF JMP 00291B40:004A E85400 CALL 00A11B40:004D C60024 MOV BYTE PTR BX+SI,241B40:0050 8BD6 MOV DX,SI1B40:0052 B409 MOV AH,091B

27、40:0054 CD21 INT 211B40:0056 E84800 CALL 00A11B40:0059 8BC1 MOV AX,CX1B40:005B E80B00 CALL 00691B40:005E B402 MOV AH,02 1B40:0060 B248 MOV DL,481B40:0062 CD21 INT 211B40:0064 B8004C MOV AX,4C001B40:0067 CD21 INT 211B40:0069 53 PUSH BX1B40:006A 51 PUSH CX1B40:006B 52 PUSH DX1B40:006C 50 PUSH AX1B40:0

28、06D 8AC4 MOV AL,AH1B40:006F E80800 CALL 007A1B40:0072 58 POP AX1B40:0073 E80400 CALL 007A1B40:0076 5A POP DX1B40:0077 59 POP CX1B40:0078 5B POP BX1B40:0079 C3 RET1B40:007A 8AD8 MOV BL,AL1B40:007C 8AD3 MOV DL,BL1B40:007E B104 MOV CL,041B40:0080 D2C2 ROL DL,CL1B40:0082 80E20F AND DL,0F1B40:0085 E80900

29、 CALL 00911B40:0088 8AD3 MOV DL,BL1B40:008A 80E20F AND DL,0F1B40:008D E80100 CALL 00911B40:0090 C3 RET1B40:0091 80C230 ADD DL,301B40:0094 80FA3A CMP DL,3A1B40:0097 7203 JB 009C1B40:0099 80C227 ADD DL,271B40:009C B402 MOV AH,021B40:009E CD21 INT 211B40:00A0 C3 RET1B40:00A1 B402 MOV AH,021B40:00A3 B20

30、D MOV DL,0D1B40:00A5 CD21 INT 211B40:00A7 B402 MOV AH,021B40:00A9 B20A MOV DL,0A1B40:00AB CD21 INT 211B40:00AD C3 RET五 、预习要求1、 分析EXA3.EXE程序。2、熟悉系统功能调用表及ASCII码表。复习转移指令,掌握各种转移条件及指令执行情况。3、 复习子程序调用与返回指令及堆栈操作指令,掌握指令的操作及执行此类指令对SP及堆栈内容的影响。4、复习移位指令,掌握指令操作及其使用方法。 六 、预习报告 EXA3程序的主程序及各子程序的流程图及程序所实现的操作。 各02号功能调

31、用输出的代码及其作为ASCII码所代表的字符。 CALL 0069处的子程序嵌套关系图。 调试方案 写明每个调试步骤的键操作及预期的执行情况 例如 对于实验内容4(修改001B处的指令后重新运行): 、用A命令(A 1b)从001B处输入并汇编指令:MOV DL,07后,退出A命令; 、用G命令(G 19)或菜单操作执行程序至第一个09号功能调用后,屏幕上应显示字符串: INPUT STEING,THE END FLAG IS 、用G命令(G 1F)或菜单操作继续执行程序至第一个02号功能调用后,因为ASCII码的07H代表振铃符,所以PC机应响铃一次。七 、实验报告(附实验记录) 1、 EX

32、A3.EXE程序的功能,运行时的键操作及执行情况(屏幕显示)。2、 用程序的实例说明以下问题:01、02、09号功能调用的使用方法及其所实现的功能。振铃、回车、换行符的ASCII码及通过02功能调用输出时的作用。3、 根据实验记录,画图表示CALL 0069处的子程序嵌套关系及堆栈区的变化情况。实验四 软件基础(2)顺序程序设计 宏汇编一 、实验目的1、 学习如何建立和执行汇编语言程序。2、 学习宏汇编的基本语法。3、 编写调试加密程序。二 、实验仪器及设备 1、MASM6.11宏汇编软件一套 2、微型计算机一台三 、实验内容1、 在目录C:MASM611BIN下直接执行示例程序EXA4S。2

33、、 编辑EXA4S.ASM,将string2中的 move改为load,汇编、连接后重新执行EXA4S,观察执行结果。3、 将string2中的load再改为move,重复上述过程。4、 编写调试加密程序。程序首先显示提示INPUT:,然后显示所键入的数字(09)对应的密码,键入$时返回DOS。密码表为 原码:1 2 3 4 5 6 7 8 9 0 密码:0 8 2 7 4 5 6 3 1 9四 、示例 汇编语言程序的建立与运行1、进入PWB开发环境在目录C:MASM611BIN下键入命令PWB exa4s.asm或者直接双击桌面上的PWB快捷方式图标即可进入PWB集成开发环境,如图8.3:2

34、、 编辑、保存源文件PWB 中编辑器的基本操作与许多文本编辑器类似,例如建立新文件、保存文件、另存为、光标移动、块操作、插人删除操作、恢复操作、查找替换操作、设置编辑器的功能键和各类颜色等。要编辑一个汇编语言源程序,首先用鼠标或 Alt + F 键选择 File 下拉菜单,然后选择 New 建立一个新文件或者选择 Open 打开一个已有的源程序。完成编辑任务后,用 File 菜单的 Save 或 Save AS 命令保存。请注意:保存源文件时一定要加上扩展名 .ASM;指令各部分之间的间隔用制表键(Tab )定位,这样打印的清单整齐规格。datasegmentstring1dbmove the

35、 cursor backward.string2dbmove the cursor backward.mess1dbmatch.,13,10,$mess2dbno match!,13,10,$dataendscodesegment codeassumecs:code,ds:data,es:datastart: movax,datamovds,axmoves,axleasi,string1leadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshort dispmatch:leadx,mess1disp: movah,09hint21hmov

36、 ax,4c00hint 21hcodeendsendstart3、 汇编和链接源程序编辑完成并保存后,可以开始汇编和链接任务。在集成环境下,程序的汇编和链接可以分别完成也可一次性完成,采用何种方式由Project菜单决定。 如果选择Compile File选项,则只完成汇编任务。如果没有汇编源程序,Build选项首先进行汇编,汇编结束并且没有发现任何错误时进行链接;如果源程序有错,显示所有错误位置和原因,不进行链接。Project菜单中的Next Project,Previous Error和Goto Error命令用于定位程序中的错误。如果源程序已经汇编,则Build选项只进行目标文件的链

37、接。这里选择 Build 选项,汇编、链接成功后,弹出如下图8.4所示的对话框。从对话框可知,程序无任何语法错误,正确生成EXE文件。对话框最下面一行的提示作用如下:View Results:用于查看汇编链接的结果,如果有错将提示具体的错误信息。 Run Program:运行程序。Debug Program:直接进入Code View调试环境。Cancel:为取消对话框。Help:获得在线帮助。有时系统在该对话框中会出现一个关于堆栈的警告性错误,当程序使用的堆栈较小时,可以忽略该错误。4、 运行程序除了通过汇编链接后弹出的对话框运行程序外,还可通过 Run菜单运行程序,方法是选择Run菜单中的Execute命令或Run Dos Command命令。运行示例程序出现如下图8.5的窗口。程序运行结束后按任意键返回到PWB环境。 5、调试 程序通过汇编和链接只说明程序中没有语法错误。汇编程序不能发现程序设计中的错误。实际上编写程序很难一次成功,这时就需要通过调试来发现错误,然后重新编辑(修改)、汇编、链接、执行。反复进行以上过程,直至成功。 在CodeView下调试EXE文件的方法如实验三所示。五 、预习要求1、 预习示例,了解如何建立与执行汇编语言程序。2、 复习教材中的相关内容,熟悉宏汇编的基本语法。3、 分析本实验示例程序EXA4S.ASM。4、 编写加密程序。六 、预习报告

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号