微机原理与接口技术实验7_第1页
微机原理与接口技术实验7_第2页
微机原理与接口技术实验7_第3页
微机原理与接口技术实验7_第4页
微机原理与接口技术实验7_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术实验指导书韩 宇 龙 武梦龙 编电子信息工程系2015年实 验 要 求一预习认真预习实验内容和相关理论知识,编写实验内容所要求的源程序,按要求写好预习报告,无预习报告或预习不合格者不得进行实验。二预习报告1基本内容:程序:程序功能、程序框图及源程序清单;主要调试步骤及程序功能测试方案。硬件:原理线路与实际接线图;主要调试步骤与测试方案。2实验指导书中提到的其它内容。三实验1按规定时间到实验室,遵守实验室相关的规章制度。2实验过程中,不允许带电操作:接线、更改线路和拆除线路必须先切断电源。3出现硬件故障立即切断电源并报告老师。4实验完成后,须经老师检查、签字后方可拆线。5将实验

2、设备拆线、整理好并关掉计算机再离开实验室。四实验报告1使用学校专门的实验报告纸撰写报告,主体内容需要手工书写。要求字迹工整,条理清楚,简明扼要,装订整齐,要有单独的封面页。实验报告封面页需依次注明以下信息:课程名称:微机原理与接口技术实验报告。实验序号及实验名称,如:实验一 软件基础。班级、姓名、学号及实验时间和地点。指导教师: 。实验成绩: 。2基本内容设计说明:软件:程序名,功能,算法说明,程序框图。硬件:原理线路、接口芯片工作方式及公式等说明,实际接线图。附教师签字的源程序清单。源程序清单需加中文注释。调试说明:实验中遇到的主要问题,解决方法及分析说明。 实际软、硬件测试结果说明3每个实

3、验中要求的其它具体内容。实验一 软件基础 课内实验学时:2学时 一实验目的 1学习使用CodeView调试环境。2学习如何建立和执行汇编语言程序。 3学习指令代码及其分段结构与寻址方式。 4学习数据传送指令。5学习宏汇编的基本语法。二实验仪器及设备 1一套MASM6.11宏汇编软件。 2一台微型计算机。三实验内容 1在CodeView的Command窗口中,用A命令汇编上机调试习题1的指令,直接在显示窗口中观察各条指令的反汇编结果并作记录。 2用A命令汇编上机调试习题2的指令,用T命令跟踪每一条指令,观察每条指令的执行情况并作记录。 3调试上机调试习题3的程序。 提示:操作开始前,先用N命令设

4、置调试命令所用参数的缺省数制。4调试上机调试习题4的程序。四软件基本用法简介1.设计说明程序名: DISP。程序功能:在屏幕上分别显示数字3和4对应的阿拉伯符号。算法说明:用两次02号系统功能调用,预先将3和4送入DL。程序框图:如图1所示。源程序:DISP:MOV DL,33H MOV AH,02H INT 21H MOV DL,34H MOV AH,02H INT 21H调试说明:系统功能调用指令INT 21H(包括INT 20H)不能用T命令跟踪,可以用G命令加上地址范围的方式执行。2.CodeView调试程序使用介绍(1)进入CodeView调试环境方法一:点击操作系统桌面的PWB快捷

5、图标进入PWB主界面,在菜单File下选中Dos Shell项进入Dos环境;在目录MASM611BIN>下键入指令: CV *.EXE(该目录下任何一个EXE文件均可),启动CodeView,在该环境下对所调入的EXE文件进行修改与调试。 方法二:从桌面的开始菜单进入Dos环境,转入MASM611BIN>目录下;键入指令: CV *.EXE,启动CodeView。 图2是CodeView的窗口调试界面的图例:图2 CodeView的窗口调试界面(2)以下各操作命令均在CodeView调试界面的Command窗口中以命令行的方式键入,用来对EXE文件进行修改与调试。g 设置基数&g

6、t;n16 说明:N为基数设置命令,用来设置调试命令所用参数的缺省数制(但N命令不会改变数据的显示方式)。g 输入新的指令>a 说明:A为汇编命令,将用户输入的符号指令汇编为机器代码,存入指定地址开始的内存单元。194E:0000 mov dl,33194E:0002 mov ah,2194E:0004 int 21194E:0006 mov dl,34194E:0008 mov ah,2194E:000A int 21194E:000C nop194E:000D g 连续运行前三条指令>g 6 说明:G为运行命令,从当前CS:IP所指的指令(即mov dl,33)开始,一直执行到

7、指定地址(即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 0034:g 单步执行第5条指令>t

8、g 观察寄存器AH中的内容>r ahAH 02:g 连续运行至前6条指令结束(INT 20返回)>g cg 查看执行结果同样,按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 90NOP 194E:000D1 以下是在寄

9、存器窗口看到的内容AX=0234BX=0000CX=0000DX=0034SP=0000BP=0000SI=0000DI=0000DS=193DES=193DSS=194DCS=194EIP=000EFL=3202NV UP EI PLNZ NA PO NC>L说明:L命令使由CV *.EXE命令调入的程序重新开始执行,之前对代码或数据所做的任何修改均将丢失。g 重新键入4条指令>a194E:0000 mov dl,33194E:0002 mov ah,2194E:0004 int 21194E:0006 nop194E:0007 g 内存单元的显示与修改>md cs:0 c

10、s:6 说明:MD为内存显示命令,用来显示指定内存单元的值。194E:0000 B2 33 B4 02 CD 21 90 .3.!. .>me cs:1 说明:ME为内存修改命令,用来设置指定内存单元的值。194E:0001 33 3. 36>g 6>md cs:0 cs:6194E:0000 B2 36 B4 02 CD 21 90 .6.!. .注:对比修改前后内存单元CS:0001中数值,可以看到已经把33H修改为36H。3.汇编语言程序的建立与运行方法介绍(1)进入PWB开发环境在目录C:MASM611BIN>下键入命令PWB exa4s.asm或者直接双击桌面

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

12、)定位,这样打印的清单整齐规格。datasegmentstring1db'move the cursor backward.'string2db'move the cursor backward.'mess1db'match.',13,10,'$'mess2db'no match!',13,10,'$'dataendscodesegment codeassumecs:code,ds:data,es:datastart: movax,datamovds,axmoves,axleasi,string1l

13、eadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshort dispmatch:leadx,mess1disp: movah,09hint21hmov ax,4c00hint 21hcodeendsendstart(3)汇编和链接源程序编辑完成并保存后,可以开始汇编和链接任务。在集成环境下,程序的汇编和链接可以分别完成也可一次性完成,采用何种方式由Project菜单决定。如果选择Compile File选项,则只完成汇编任务。如果没有汇编源程序,Build选项首先进行汇编,汇编结束并且没有发现任何错误时进行链接;如果源程序有错,显示所有

14、错误位置和原因,不进行链接。Project菜单中的Next Project,Previous Error和Goto Error命令用于定位程序中的错误。如果源程序已经汇编,则Build选项只进行目标文件的链接。这里选择 Build 选项,汇编、链接成功后,弹出如下图4所示的对话框。图4 汇编链接成功后弹出的对话框从对话框可知,程序无任何语法错误,正确生成EXE文件。对话框最下面一行的提示作用如下:View Results:用于查看汇编链接的结果,如果有错将提示具体的错误信息。 Run Program:运行程序。Debug Program:直接进入Code View调试环境。Cancel:为取消

15、对话框。Help:获得在线帮助。有时系统在该对话框中会出现一个关于堆栈的警告性错误,当程序使用的堆栈较小时,可以忽略该错误。(4)运行程序除了通过汇编链接后弹出的对话框运行程序外,还可通过 Run菜单运行程序,方法是选择Run菜单中的Execute命令或Run Dos Command命令。运行示例程序出现如图5所示的窗口。图5 运行示例程序出现的窗口程序运行结束后按任意键返回到PWB环境。 (5)调试 程序通过汇编和链接只说明程序中没有语法错误。汇编程序不能发现程序设计中的错误。实际上编写程序很难一次成功,这时就需要通过调试来发现错误,然后重新编辑(修改)、汇编、链接、执行。反复进行以上过程,

16、直至成功。在CodeView下调试EXE文件的方法如实验二所示。五上机调试的习题1分别以二进制数形式和十六进制数形式写出以下指令的机器码,并在二进制数表示的机器码中标明其各个组成部分及其含义。 MOV AX,DX ADD CX,BX+8 SUB BX+SI,SI MOV AL,DL ADD CX,BX SBB DI,AL 2已知从2000H:7358H开始的4个 MOV AX,2000H 存储单元的内容顺序为: MOV DS,AX 36H 85H 43H 21H MOV DI,7348H e2000:7358 a int 7 写出题中各指令的寻址方式及各指令的 MOV AL,10H DI 执行

17、结果。 MOV SS,DI+10H LEA BX,DI+10H LES CX,10H+DI 3已知DS=2000H,欲将2000H:7348H与2000H:735AH的内容互换。写出三个不同的程序段,分别用通用数据传送指令,交换指令及堆栈操作指令完成互换操作。 提示:题中的已知条件可用CodeView的MF命令、R命令直接写入相应的内存单元或寄存器。4写出下面程序段中每一条指令的执行结果,以及各程序段所实现的操作。(1) SGWS: MOV AX,8514H MOV BX,3692H MOV CH,AH SUB AL,BL DAS XCHG AL,CH SBB AL,BH DAS MOV AH

18、,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熟悉CodeView调试环境和常用的调试命令。 2预习报告: CPU内部寄存器的名称及其作用。 各种寻址方式,指令代码的分段结构。 数据传送指令。 分析上机调试习题4的程序,说明每一段程序的算法及所实现的操作。按实验报告要求,设计调试方

19、案。七实验报告 1分析上机调试习题1中每一条指令的字段结构与寻址方式。例如: 89D0 MOV AX,DX 100010 0 1 11 010 000 源寄存器寻址 D W MOD R R/M 字 源 目的 目的寄存器寻址 2分析上机调试习题2中每一条指令应该完成的操作及实际结果。例如:MOV AX,2000 指令操作: 立即数送入AX 执行结果: AX=2000 3上机调试习题3的主要内容。 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案和测试结果。4上机调试习题4第一个程序段(1)填表以下指令之后AH AL BH BL CH CL CF(标志)SUB AL,B

20、LDASSBB AL,BHDASMOV AL,CH(2)能否省去XCHG AL,CH指令,直接用SBB CH,BH对两个高位字节相减?(3)如果将SUB AL,BL 换为SBB AL,BL ,程序还应作哪些修改?(4)能否直接用16位数相减指令?为什么?5上机调试习题4第二个程序段(1)讨论程序中进行的堆栈操作。(2)画图表示本段程序执行后堆栈指针、堆栈区及有关存储区的内容。实验二 指令系统 课内实验学时:2学时 一实验目的1使用CodeView命令进行程序调试。2学习移位、转移、子程序调用与返回、堆栈操作指令。3学习状态标志与条件转移指令。4学习系统功能调用。5熟悉ASCII码表及振铃、回车

21、、换行符的使用。二实验仪器及设备 1一套MASM6.11宏汇编软件。 2一台微型计算机。三实验内容C:MASM611BIN>CV exa2.exe调试EXA2.EXE程序1 运行程序EXEA2.EXE,记录运行时的键操作与对应的屏幕显示。2 从程序开始处运行至第一个09号系统功能调用后,记录显示的字符及DS:0000开始的数据区的内容。3继续执行至第一个02号系统功能调用后,记录显示的字符。 思考:为什么09号系统功能调用不能显示$字符?4 将001B处的指令改为MOV DL,07H,重复2、3步骤,记录程序执行情况。5 继续执行至第一个01号系统功能调用后,键入8,记录AX的内容。6

22、用T命令逐条跟踪,直至转移到0029处(MOV 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 C

23、X : PUSH DX : PUSH AX :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的变化情况。四EXA2.EXE程序的反汇编清单1B40:0000 B8321B M

24、OV AX,1B321B40:0003 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 CD

25、21 INT 211B40:001F 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 00291B

26、40:003A 3C30 CMP 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

27、B409 MOV AH,091B40: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

28、50 PUSH AX1B40:006D 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,0F

29、1B40:0085 E80900 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

30、,021B40:00A3 B20D 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分析EXA2.EXE程序。2熟悉系统功能调用表及ASCII码表。复习转移指令,掌握各种转移条件及指令执行情况。3 复习子程序调用与返回指令及堆栈操作指令,掌握指令的操作及执行此类指令对SP及堆栈内容的影响。4复习移位指令,掌握指令操作及其使用方法。六预习报告 EXA2.EXE的主程序及各子程序的流程图及程序所实现的操作。

31、 各02号功能调用输出的代码及其作为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机应响铃一次。七实验报告(附实验记录)

32、1EXA2.EXE程序的功能,运行时的键操作及执行情况(屏幕显示的内容)。2用程序的实例说明以下问题:01、02、09号功能调用的使用方法及其所实现的功能。振铃、回车、换行符的ASCII码及通过02功能调用输出时的作用。3 根据实验记录,画图表示CALL 0069处的子程序嵌套关系及堆栈区的变化情况。实验三 汇编语言程序设计(1) 课内实验学时:2学时 一实验目的1掌握汇编语言程序设计中,分支程序的设计方法及测试程序功能的方法。二实验仪器及设备1一套MASM6.11宏汇编软件。2一台微型计算机。三实验内容1运行示例程序EXA3T.ASM,测试其功能。2设计响铃程序: 从键盘接收输入的字符,如果

33、是数字N(09),则响铃N次;如果不是数字,则不响铃;当键入空格键(Space)时退出程序。 提示:也可以将响铃符(响铃符的ASCII编码值:07H)修改为别的符号,比如:#,$等可见符号。 思考扩展要求:如果输入的数字N是一个大于、等于10的数字,程序又该怎么设计?(假设N最大不超过99以十进制计算,输出的符号每10个为一行进行显示)四示例程序清单 EXA3T.ASMCRLF MACROMOV DL,0DHMOV AH,02HINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATASEGMENTMESS1DB 'INPUT THE SEGMENT ADDR

34、:$ 'MESS2DB 'INPUT THE OFFSET ADDR:$'MESS3DB 'OK HAS FOUND!',0DH,0AH,'$'MESS4DB 'NO SPACE CHARACTER!',0DH,0AH,'$'ERRORDB 'INPUT ERROR!',0DH,0AH,'$'DATAENDSSTACKSEGMENTSTADW 32 DUP(?)TOPDW ?STACKENDSCODESEGMENT CODEASSUMECS:CODE,DS:DATA,ES:D

35、ATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AH,09HMOV DX,OFFSET MESS1INT 21HCALL GETNUMMOV ES,DXMOV AH,09HMOV DX,OFFSET MESS2INT 21HCALL GETNUMMOV DI,DXCLDMOV CX,0100HMOV AL,20HREPNZ SCASBJNZ NFUMOV AH,09HMOV DX,OFFSET MESS3INT 21HJMP BBBNFU:MOV AH,09HMOV DX,OFFSET MESS4INT 21HBBB:MOV AX,4C00

36、HINT 21HGETNUMPROC NEARPUSH CXXOR DX,DXGGG:MOV AH,01HINT 21HCMP AL,0DHJZ PPPCMP AL,20HJZ PPPSUB AL,30HJB KKKCMP AL,0AHJB GETSCMP AL,11HJB KKKSUB AL,07HCMP AL,0FHJBE GETSCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL ,20HGETS:MOV CL,04HSHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK:MOV AH,09HMOV DX,OFFSET ERRORINT 21

37、HJMP GGGPPP:PUSH DXCRLFPOP DXPOP CXRETGETNUMENDPCODEENDSENDSTART五预习要求1分析示例程序,说明其功能。 2考虑如何测试示例程序的每一项功能。3参考图6所示的流程图编写响铃程序。注:关于汇编语言程序的建立与运行方法,请参考实验一中的第四部分第三节的内容。六预习报告1示例程序:· 画出主程序与子程序的流程图,分别说明其功能。· 写出测试示例程序功能的方案。2响铃程序:编写响铃程序,要求包括以下内容: 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案。编程提示:为了区别两次响铃声,在输入前

38、一个响铃符后,需延迟一段时间,再输入下一个响铃符。可用重复执行500000次LOOP指令的方法产生足以区别两次响铃声的延时,例如: MOVBL,14H CC:MOV CX,6000H UU:LOOP UU DEC BL JNZ CC 编程时,应根据上述要求,自行确定另外两个常数送入BL和CX。七实验报告1示例程序: 测试时的操作与结果。 整理和修改预习报告中示例程序部分的内容。2响铃程序:整理编写的响铃程序,要求包括以下内容: 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案和测试结果。 实验中遇到的主要问题,解决方法及其分析说明。 实验四 汇编语言程序设计(2)

39、课内实验学时:2学时 一实验目的1掌握汇编语言程序设计中,多重循环程序的设计方法并熟悉ASCII码表。二实验仪器及设备 1一套MASM6.11宏汇编软件。 2一台微型计算机。三实验内容ASCII码显示程序,用16×16表格形式显示ASCII字符00HFFH。四编程提示1参考流程如图7所示。2在输出空格时,要保护DL中原来的内容。3如果使用堆栈,需注意恢复堆栈指针(整个程序中进栈,出栈次数相同)。4 双重循环,建议用CX作内层循环指针(使用LOOP指令),用BX作为外层循环计数器。5 为了输出格式的清晰、整齐和好识别,每两行之间加一个空行,每两列之间加一个空格;当输出“回车符”、“换行

40、符”、“制表符”等格式符时,统一替换为“#”或者“空格符”等符号。五预习要求编写循环程序,要求包括以下内容: 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案。六实验报告整理编写的循环程序,要求包括以下内容: 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案和测试结果。 实验中遇到的主要问题,解决方法及其分析说明。实验五 汇编语言程序设计(3) 课内实验学时:2学时 一实验目的1掌握汇编语言程序设计中,子程序的设计与使用的方法。2学习字符串搜索程序。二实验仪器及设备1一套MASM6.11宏汇编软件。2一台微型计算机。三实验内容1运行示例程

41、序EXA5S.EXE,测试其功能。2键盘输入数据显示程序。将从键盘接收到的最后4位十六进制数(以回车或空格结束)转换为二进制数,显示在屏幕上。如果键入非十六进制数的字符,则先显示出错信息,再显示二进制数。键入78A9B65(CR)78AF9B6K显示1001101101100101INPUTERROR!1111100110110110提示:输入的十六进制数不足4位的前面补零;最后显示的二进制数,可以按每4比特为一组,中间加空格符或者逗号隔开,便于核实是否正确,二进制数所在的行最后可以固定显示字母“B”表示二进制。 思考扩展要求:如果从键盘上只可以输入字母和数字(字母的大小写不作要求,字母和数字

42、输入的先后次序没有要求),当输入结束符后,要求将最后接收到的4个字母对应的ASCII的编码值以十六进制的显示显示出来,程序又该怎么设计?例如: 键入78A9B65eP6M93(CR)显示BePM42H 65H 50H 4DH四编程提示·参考图8所示的流程图。·可参考实验三的示例程序EXA3T.ASM的GETNUM子程序,但由主程序显示出错信息,子程序建立出错标志(BX=1);扩展要求部分,可参考实验二示例程序的有关编程思路。 ·INT 21H将改变DX的内容,在显示出错信息前应保护DX的内容。五示例程序从字符串中搜索字符串1,两个字符串均从键盘输入。C:MASM6

43、11bin>PWB EXA5S.ASMCRLFMACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATASEGMENTMESS1DB 'MATCH',0DH,0AH,'$'MESS2DB 'NO MATCH',0DH,0AH,'$'MESS3DB 'INPUT STRING1:',0DH,0AH,'$'MESS4DB 'INPUT STRING2:',0DH,0AH,'$'MAXLEN1

44、 DB 81ACTLEN1 DB ?STRING1 DB 81 DUP(?)MAXLEN2 DB 81ACTLEN2 DB ?STRING2DB 81 DUP(?)DATAENDSSTACKSEGMENTSTADB 50 DUP(?)TOPEQU LENGTH STASTACKENDSCODESEGMENT CODEASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV AH,09HMOV DX,OFFSET MESS3INT 21H

45、MOV AH,0AHMOV DX,OFFSET MAXLEN1INT 21HCRLFMOV AH,09HMOV DX,OFFSET MESS4INT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN2INT 21HCRLFMOV SI,OFFSET STRING1MOV BX,SIMOV CL,SI-1MOV CH,00HMOV DX,CX;CX=DX=串1长MOV DI,OFFSET STRING2PUSH DIMOV AL,DI-1MOV AH,00H;AX=串2长ADDAX,OFFSET ACTLEN2;AX=串2末地址SUB AX,CXCLDKKK: CMPDI,AX

46、 JA NK;串2剩余长度小于串1长度MOV SI,BXMOV CX,DXREPZCMPSBPOP DIJZ GGG;找到串1转INC DI;从串2下一个字符开始搜索PUSH DI JMPKKKNK:MOV AH,09HMOV DX,OFFSET MESS2INT21HJMPPPPGGG:MOV AH,09HMOVDX,OFFSET MESS1INT 21HPPP: POP DIMOVAX,4C00HINT21HCODEENDSENDSTART六预习要求1分析示例程序,掌握搜索字符串的方法。2确定测试示例程序功能的步骤。3编写键盘输入数据显示程序。七预习报告1示例程序 画出程序流程图,说明程序功能。 写出测试示例程序的步骤。2键盘输入数据显示程序按要求编写程序,要求包括以下内容: 程序采用的主要算法。 程序框图及源程序清单。 主要调试步骤、程序功能测试方案。八实验报告1示例程序: 程序流程图。 测试操作与结果分析。2键盘输入数据显示程序:整理编写好的程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论