微机原理软件实验指导书.doc

上传人:rrsccc 文档编号:8810305 上传时间:2021-01-17 格式:DOC 页数:31 大小:214KB
返回 下载 相关 举报
微机原理软件实验指导书.doc_第1页
第1页 / 共31页
微机原理软件实验指导书.doc_第2页
第2页 / 共31页
微机原理软件实验指导书.doc_第3页
第3页 / 共31页
微机原理软件实验指导书.doc_第4页
第4页 / 共31页
微机原理软件实验指导书.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《微机原理软件实验指导书.doc》由会员分享,可在线阅读,更多相关《微机原理软件实验指导书.doc(31页珍藏版)》请在三一文库上搜索。

1、实验一 基本程序编程和程序调试一、 实验目的1、 掌握数码转换等基本程序设计的技巧和方法。2、 熟悉DEBUG命令。3、 学会和掌握用DEBUG调试程序的方法。二、 实验设备PC机一台,装有DOS基本系统三、 实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。它共有19条命令完成相应的功能,命令及其格式可参阅附录一。(一) DEBUG操作练习1)实验调试程序程序的功能是从3500H内存单元开始建立0-15共16个数据。程序如下:地址(H)机器码(H)助记符2000BF0035MOVDI, 35002003B91000MOV

2、CX, 00102006B80000MOVAX, 000020099ESAHF200A8805MOV BYTEDI,AL200C47INC DI200D40INC AX200E27DAA200FE2F9LOOP 200A2011F4HLT 2)实验步骤:(1)输入与修改 启动DOS,在DOS提示符下输入D E B U G后回车,屏幕立即显示DEBUG提示符“”,表明已进入DEBUG状态,可以执行DEBUG的各种命令。 用DEBUG中的汇编命令 “A 地址”将程序建立在内存单元中。 在提示符“”下键入 : “A 2000 ” 此时显示器上将会显示程序的段地址CS和偏移地址IP,你就可以输入以上的

3、程序了。即显示 169C :2000 键入 MOV DI, 3500 169C: 2003 MOV CX, 0010169C: 2011 HLT : : : 用反汇编命令 “U 地址”检查程序在提示符“”下,键入 “U 2000”,将从2000内存单元开始的内容反汇编,屏幕上显示 169C:2000 BF0035 MOV DI, 3500 169C:2003 B91000 MOV CX, 0010 169C:2006 B8000 MOV AX, 0000 : : : : : : 169C:2011 F4 HLT当发现程序有错时,可用汇编命令“A 地址”进行修改,如要修改200A单元中的指令,

4、则键入“A 200A” ,屏幕显示 169C:200A ,然后再键入MOV BYTEDI, AL,就把错误的程序改正了。(2)显示和修改数据用修改内存单元命令 “E 地址” 在指定内存单元中存入一个数。如要在3500为首址的单元中存入14H和25H两个数据,可在提示符“”下,键入:“ 3500”显示 169C:3500 键入14,按空格键 25,按空格键用显示内存命令 “D 地址” 检查指定单元的内容在提示符“”下,键入 “D3500”显示 1489:3500 14 25 48 02 1489:3510 * * * * : : : : 1489:3570 * * * * 若某单元内容有错则可用

5、命令: “E 地址 ”进行修正。用显示和修改命令 “R ”或“R 寄存器名”显示寄存器或修改其内容在提示符“”下,键入 “R”显示 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE DS=169C ES=169C SS=169C CS=169C IP=2000要修改IP的内容时,键入命令 “R IP”后, 显示 IP 2000,在2000之后键入新内容。(3)程序运行程序的运行方式有单步运行、断点运行和连续运行几种方式。单步运行 输入DEBUG跟踪命令“T”或“T=地址”或“T=地址 指定次数”,可从指定地址处运行该单元中的一条指令,以后只要连续输入“T”命令就能

6、连续执行一条一条指令。如在提示符“”下,键入 “T=2000 ”显示 :AX=0000 BX=0000 CX=001D DX-0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=169C ES=169C SS=169C CS=169C IP=2000 NV169C:2003 B91000 MOV CX, 0010断点运行用运行命令 “G=地址 地址断点 地址断点”执行指定地址的程序在提示符“”下,键入 “G=2000 2011 ”显示 169C:2011 F4 HLT 表示这段程序已经执行完毕。连续运行输入DEBUG命令“G=地址”,执行指定地址的程序(4)用显示内

7、存命令检查运行结果在提示符“”下,键入命令 “D 地址”,根据其中的内容判断程序运行是否正确。如检查以上程序执行后的结果,在提示符“”下,键入“ D 3500”,可显示169C:3500 00 01 02 03 04 15169C:3510 (二)数码转换程序及其调试1、 将ASCII码表示的十进制数转换为二进制数1)程序设计的算法及其程序十进制数据可表示为:DI代表十进制数1,2,3,9,0 上式可转换为: 由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn开始乘10加次位的操作,将结果再乘10再加下一次位,如此重复,则可求出二进制数结果来。程序流程及参考程序如图1-1。这里

8、我们规定:被转换的ASCII码十进制数存放在3500H3504H单位中。而转换结果存放在3510H3511H单元中。2)实验步骤(1)输入程序并检查无误。(2)在3500H3504H单元存入十进制数12的ASCII码,即E3500H,并输入3030303132H。(3)G=2000,运行程序,并用CTRL+C来中断程序返回监控状态。(4)用D3510来查看结果,应为:3510 0C 00(5)反复试几组数,考查程序的正确性。地址(H) 助记符 注释2000 MOV SI,3500 ;源地址2003 MOV DI,3510 ;结果地址2006 MOV BX,000A ;乘数 102009 MOV

9、 CX,0004 ;计数200C MOV AH,00 ;AH 清零200E MOV AL,SI ;取被转换数2010 SUB AL,30 ;ASCII码变十进制数2012 IMUL BX ;高位(AX)*(BX)送AX2014 ADD AL,SI+01 ;取下一位1017 SUB AL,30 ;ASCII码减30变十进制数2019 INC SI ;源地址指针+1201A LOOP 2012 ;CX-1,若CX不等于零则继续201C MOV DI,AX ;若CX不等于零则存结果201E INT 3 图1-12 将十进制数的ASCII码转换为BCD码1)程序流程和程序设从键盘输入的五位十进制数的A

10、SCII码已存放在3500H起始的内存单元内,把它转换成BCD码后,再按位分别存入350AH起始的内存单元内。若输入的不是十进制数的ASCII码,则对应存放结果的内容为“FF”。一字节ASCII码取其低四位即变为BCD码,程序流程图及考程序如图1-2所示。2)实验步骤(1) 输入程序并检查无误。(2) 在3500H3504H单元中存入五位十进制数的ASCII码,即E3500,并输入31,32,33,34,35。(3) G=2000,运行以上程序。(4) D350A,显示结果为:0000:350A 01 02 03 04 05 CC(5) 反复试几组数,考查程序的正确性。地址(H) 助记符 注释

11、2000 MOV CX,0005;循环计数器赋初值2003 MOV DI,3500;ASCII码首址2006 MOV BL,FF; 错误标志送BL2008 MOV AL,DI;送ASCII码至AL200A CMP AL,3A; 比较AL与3AH200C JNB 2014; 不低于3A则转2014200E SUB AL,30; 低于3A则取ASCII码的低四位2010 JB 2014; 低于30则转20142012 MOV BL,AL; 否则AL内容送BL,取代FF2014 MOV AL,BL; 结果或错误标志送AL2016 MOV DI+0A,AL2019 INC DI201A LOOP 20

12、06201C INT 3图1-23 将十六位二进制数转换为ASCII码表示的十进制数1)程序及其流程十六位二进制数的值域为065535,最大可转换为五位十进制数。算法:五位十进制数可表示为: Di:表示十进制数09。 因此,将十六位二进制数转换为五位ASCII码表示表示的十进制数,就是求D1D4,并将它化为ASCII码。程序流程图如图1-3所示,设源数据存于35003501H单元中,结果数存于35103514H单元中。2)实验步骤(1) 输入程序并检查无误。(2) 在35003501H单元中存放0C00,运行程序并检查结果,应看到35103514H单元中的数依次为3030303132。(3)

13、反复试几组数,并运行程序、观察结果。地址(H) 助记符 注释2000 MOV DX,3500;取二进制数2004 MOV SI,3515; 目标首址在35102007 DEC SI2008 MOV AX,DX200A MOV DX,0000200D MOV CX,000A 2010 DIV CX; ; 除102012 XCHG AX,DX2014 ADD AL,302016 MOV SI,AL2018 CMP DX,0000201B JNE 2007201D CMP SI,3510 ; 填余下高位为02021 JZ 202A; 2023 DEC SI2024 MOV AL,302026 MOV

14、 SI,AL2028 JMP 201D202A INT 3图1-34、 十六进制数转换为ASCII码1) 程序及其流程经过CPU处理后的十六进制数存放在起始地址为3500H的内存单元中,把它们转换成ASCII码之后,再分别存入起始地址为350AH的内存单元中。 从表2-1中可知,十六进制数加30H即可得到0H9H的ASCII码,而要得到AHFH的ASCII码,则需再加7H。程序流程图及参考程序如图1-4所示。2)实验步骤(1) 输入程序并检查无误。(2) 在35003501H单元中存入四位十六进制数203B,即E3500,并输入3B,20。(3) G=2000,运行以上程序(4) D350A,

15、显示结果为:0000:350A 42 33 30 32 CC输入数据与结果ASCII码对应顺序相反。(5) 反复试几组数。考查程序的正确性。地址(H) 助记符 注释2000 MOV CX,00042003 MOV DI,35002006 MOV DX,DI2008 MOV AX,DX200A AND AX,000F ;取低四位值200D CMP AL,0A; ; 判是否“0”-“9”200F JB 2013 ; 是“0”-“9”转20132011 ADD AL,07; 是“A”-“F”,加72013 ADD AL,30; 转换为ASCII码2015 MOV DI+0A,AL2018 INC D

16、I2019 PUSH CX ;保护循环计数器内容201A MOV CL,04; 移位次数送CL201C SHR DX,CL201E POP CX201F LOOP 20082021 INT 3图1-44 BCD码转换为二进制数 1) 程序及其流程设四个二位十进制数的BCD码存放在起始地址为3500H,的单元中,转换出的二进制数码存入起始地址为3510H的内存单元中,程序流程图及参考程序如图1-5所示。地址(H) 助记符 注释2000 MOV CX,00042003 MOV DI,35002006 MOV AL,DI2008 ADD AL,AL ;乘2200A MOV BL,AL200C ADD

17、 AL,AL ;乘2200E ADD AL,AL ;乘22010 ADD AL,BL ;乘102012 INC DI2013 MOV AH,002015 ADD AL,DI; BCD码十位与个位加2017 MOV DI+0F,AX;存结果 图1-5201A INC DI201B LOOP 2006201D INT 32)实验步骤(1) 输入程序并检查无误。(2) 在35003507单元中存入四个十进制数(12,34,56,78)的BCD码,即E3500 输入01,02,03,04,05,06,07,08。(3) G=2000,运行以上程序。(4) D3510,显示结果为3510 0C 00 2

18、2 00 38 00 4E 00(5) 反复试几组数,考查程序的正确性。四、思考题1、 图1-1程序,将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大又可为多少?为什么?2、 将一个十六位二进制数转换为ASCII码十进制数时,如何确定D1的值?3、 在十六进制数转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?4、 自编ASCII码十六进制、十进制小数二进制、二进制BCD码的程序,并调试运行。实验二 程序设计和PC机上程序调试操作实验一、实验目的掌握常用程序设计的基本技巧和方法。学会和熟悉使用MASM汇编程序和LINK连接程序。掌握使用PC机上编程和调试

19、程序的方法。二、实验设备PC机一台,装有DOS基本系统和MASM宏汇编软件三、实验内容及步骤(一)按要求编写程序并在DEBUG下建立、汇编和调试程序、 四字节二进制数的加法1)程序设计要求两个字的被加数存放于3500H3503H单元,加数存于3504H3507H单元(存放格式为高位存高地址单元,低位存低地址单元),两数之和(如不超过四字节)存放于3508H350BH单元。2)实验步骤()编写程序。()在DEBUG下输入程序并检查(程序可存放于2000H8000H单元)。()在3500H3507H单元中存入被加数014527和加数146758。()运行程序后,检查3508H350BH单元中内容。

20、()反复选择几组被加数和加数,检查结果,验证程序正确性。2、数据块的搬移1)程序设计思想和要求将内存中一数据区中数据(源数据块)传送到另一数据区(目的数据块)。源数据块和目的数据块区在内存中的位置有两种情况:两区重叠和不重叠,如下图所示。对于两个数据块不重叠的情况,数据的传送可从数据块的首址开始,也可从数据块的末址开始;对于两个数据块重叠的情况,则要加以分析,否则重叠部分会因搬移而遭破坏。处理方法可以是:在源数据块首址目的数据块首址时,从数据块的首址开始传送,在数据块首址目的数据块首址时,从数据块的末址开始传送。若源数据块首址存放于SI 中,目的数据块首址存放于DI 中,块字节数存放于CX中。

21、要求设计的程序能够实现不同情况下的数据块传送。源数源据块数据目的块数据目的数块据块)实验步骤()编写程序。()在DEBUG下键入程序并检查(程序可存放于2000H8000H单元)。()确定源数据块和目的数据块区不重叠时的首址,确定数据块个数为16个。并在源数据区送入任意个数据。()运行程序后,检查目的数据区的内容。()确定源数据块和目的数据块区重叠时, 源区首址目的区首址时的首址, 以及数据块个数为16个,并在源数据区送入任意个数据。运行程序后,检查目的数据区的内容。()确定源数据块和目的数据块区重叠时, 源区首址目的区首址时的首址, 以及数据块个数为16个,并在源数据区送入任意个数据。运行程

22、序后,检查目的数据区的内容。3、无序数据块的递增排序)程序设计思想和要求在首址为3000H 的数据区中存放着一组无符号数, 数据的长度存于3500H单元内,要求用冒泡法对该区中的数据按递增次序排列。冒泡法的基本思想是从最后一个数(或从第一个数)开始,依次把相邻两个数比较,即第个数与第个数比较,若大则交换,否则不交换,直到个数都比较完为止。此时,其中最小数排在最前列。然后将剩下的-1个数再按前述方法进行,找到N-1个数中最小的数。以后重复进行,直到全部按序排列。)实验步骤()编写程序。()在DEBUG下键入程序并检查(程序可存放于2000H8000H单元,只要不与数据区重叠即可)。()确定数据个

23、数并输入3500H单元中,在首址为3500H的数据区中存入任意无符号数。()运行程序并检查运行结果。()反复修改数据个数和数据区中的数,运行程序、观察结果,验证程序的正确性。4、求数的平方根)程序设计思想和要求减奇数法是一种求取近似平方根和平方根的整数部分的方法。有公式:nS(2K-1)=N2=1若要求数S的平方根S, 则可以从S中减去奇数1、3、5直到减为零或不够减下一个奇数为止,然后统计减去的奇数个数,它就是S的近似平方根。被开方数为一个足够大的二进制数, 存于首址为4000H的单元内,它的方根存放在以4500H为首的单元内。)实验步骤()编写程序。()在DEBUG下输入程序并检查(程序可

24、存放于2000H8000H单元,和数据存放单元不要重叠)。()在4000H为首的单元中存入一个任意大的数。()运行程序并检查运行结果。()反复修改被开方数,运行程序、观察结果,验证程序的正确性。5、思考题 如果二进制加数和被加数不限于四字节而为任意字节时,程序应作如何改动? 修改原有的无符号数的排序程序为带符号数的排序程序。 被开方数是一压缩型的BCD码十进制数时,程序应作如何修改?(二)MASM汇编程序和LINK连接程序的使用操作在DEBUG中,使用A命令建立程序,一般不能使用标号和伪指令,并不能保存汇编语言源程序,适用于简单程序。MASM宏汇编程序可以将编辑程序建立的源程序文件进行汇编,汇

25、编后在盘上建立目标文件、列表文件和交叉参考文件。而目标文件经LINK程序连接以后成为可执行的文件,它可以在DOS下执行也可在DEBUG下调试。1、计算机钢琴程序1)实验内容根据乐曲中不同的音符是由输出不同频率的声波而产生的原理,通过设置PC机中 8253定时器不同的计数值,可由扬声器发出不同的曲调。 以下是实现PC机作为一架可弹奏的钢琴演奏预定的曲调。程序中采用了INT 21H软中断调用了DOS的常用子程序。源程序为:DATA SEGMENTMESS DB Push any key to stop!,0dH,0aH,$TABLE DW 524,588,660,698,784,880,988,1

26、048,1176,1320,0TABLEL DB 31H,31H,32H,31H,34H,33H,3BH DB 31H,31H,32H,31H,35H,34H,3BH DB 31H,31H,38H,36H,34H,33H,32H,3BH DB 36H,36H,36H,34H,35H,34H,3BH,0AAHDATA ENDSSTACK SEGMENT PARA STACK STACKSTA DB 256 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK, ES: DATASTART PROC FAR DIV WO

27、RD PTR TABLE+BX PUSH DS MOV BX, AX XOR AX, AX MOV AL, 10110110B PUSH AX OUT 43H, AL MOV AX, DATA MOV AX, BX MOV DS, AX OUT 42H, AL MOV ES, AX MOV AL, AH MOV AH, 09H OUT 42H, AL LEA DX, MESS IN AL, 61H INT 21H OR AL, 03HKK: LEA SI, TABLEL OUT 61H, AL CALL DELAY IN AL, 61H AND AL, 0FCH OUT 61H, AL QQ:

28、 INC SISING: MOV AH, 06H JMP SING MOV DL, 0FFH FINISH: RET INT 21H START ENDP JNE FINISH MOV AL, SI DELAY PROC NEAR ; 延时子程序 CMP AL, 3BH PUSH CX JNE DDD PUSH AX CALL DELAY MOV AX, 500H ; 大循环次数 JMP QQ X1: MOV CX, 0FFFFH ; 小循环次数DDD: CMP AL, 0AAH X2: DEC CX JE KK JNZ X2 SUB AL, 31H DEC AX SHL AL, 01H JN

29、Z X1 MOV BL, AL POP AX MOV AX, 0000H POP CX MOV DX, 12H RET MOV BH, 00H DELAY ENDP CODE ENDS END START2)实验步骤(1)利用EDIT 全屏幕编辑程序或TURBO PASCAL中的编辑功能输入以上程序,以文件名为 PLAYPIA.ASM存盘。(2)在DOS系统下执行子目录MASM中的执行文件MASM.EXE ,用宏汇编程序将PLAYPIA.ASM.汇编成目标文件PLAYPIA.OBJ。操作过程如下:显示 键入 C:MASM MASM MICROSOFT(R) COPYRIGHT(C)SOURCE

30、 FILENAME .ASM PLAYPIA OBJECT FILENAME PLAYPIA.OBJ SOURCE LISTINGNUL.LST PLAYPIA CROSS-REFERENCENUL.CRF WARNIING ERRORS 0SEVERE ERRORS 0如ERRORS 均为0 表示汇编正确,如不为0,则必须在编辑状态下重新修改源程序。(3)运行子目录DOS下LINK执行文件将目标文件PLAYPIA.OBJ连接成为可执行的文件PLAYPIA.EXE。操作如下:显示 键入 C: LINK MICROSOFT(R) COPYRIGHT(C) OBJECT MODULES.OBJ:

31、PLAYPIA RUN FILEPLAYPIA.EXE LIST FILENUL.MAP PLAYPIA LIBRARIES.LIB C: (4)在DOS下直接键入由MASM宏汇编和LINK连接程序生成的可执行文件文件名PLAYPIA,运行程序观察运行结果。(6) 修改程序中延时子程序的循环次数,重新汇编、连接后运行。2、求数据块的最小值和最大值)实验内容在以BUFFER为首址的内存中存放了若干个带符号数, 其个数存放在首单元,寻找出它们最大值放到存储单元MAXVAL中, 最小值放到存储单元MINVAL中。汇编语言源程序如下: DATA SEGMENT BUFFER DB 10,22,33,-

32、80,127,-76,0,90,-45,60,-1 MINVAL DB ? MAXVAL DB ? DATA ENDS STACK SEGMENT PARA STACK STACK STA DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK START PROC FAR PUBH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX LEA BX, BUFFER MOV CH, 0 MOV CL, BX INC BX MOV A

33、L, BX MOV MINVAL, AL MOV MAXVAL, AL INC BX DEC CX AGAIN: MOV AL, BX CMP AL, MINVAL JE NEXT JG A1 MOV MINVAL, AL JMP NEXT A1: CMP AL, MAXVAL JL NEXT MOV MAXVAL, AL NEXT: INC BX DEC CX JNE AGAIN RETF START ENDP CODE ENDS END START)实验步骤()用编辑程序建立源程序文件,文件名自定。()用MASM宏汇编程序和LINK连接程序将源程序文件汇编生成以EXE为扩展名的执行文件。(3)用DEBUG调试程序将由上产生的EXE可执行文件送入内存,先用反汇编命令检查程序内容和首末地址,然后检查以BUFFER为首址的存储单元中数据块和MINVAL、MAXVAL单元的内容。BUFFER 地址单元的段地址和偏移地址是由系统在汇编和连接时指定的。各个不同的系统都不一样,一般来说,偏移地址为零,段地址可在反汇编程序时,根据指令MOV AX, DATA 对应机器码中DATA的值来确定。(4)在DEBUG下运行程序,检查运行结果。(5)修改源程序中BUFFER数据区的各数据,重新汇编后再运行,检查结果。3、从

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1