微机原理实验指导一(2015

上传人:jin****ng 文档编号:201006077 上传时间:2023-04-18 格式:DOCX 页数:16 大小:166.11KB
返回 下载 相关 举报
微机原理实验指导一(2015_第1页
第1页 / 共16页
微机原理实验指导一(2015_第2页
第2页 / 共16页
微机原理实验指导一(2015_第3页
第3页 / 共16页
点击查看更多>>
资源描述
一、系统认识实验1.1实验目的掌握QASM轻松汇编(TD系列微机原理及接口技术教学实验系统)的操作,熟悉QASM (Wmd86 联机集成开发调试软件)的操作环境。学习和掌握程序编写,汇编,调试的方法和技术。1.2实验设备PC机一台,(TD-PITE实验装置或TD-PITC实验装置一套)1.3实验内容编写实验程序,将00HOFH共16个数写入内存03000H开始的连续16个存储单元中。1.4实验步骤1. 进入QASM编程环境:将TDASM和ASMPRO文件夹复制到D盘根目录上,运行TDASM下 的QASM,进入集成开发环境。2输入汇编源程序:编写输入实验程序,如图所示,并保存为A1,此时系统会提示输入新的文件名, 输完后点击保存。可以用打开文件方式将以前保存的源程序调入。SSTACKSSTACKSEGMENT STACKDW 32 DUP (?)ENDS:定义堆栈段;建立数据起始地址;循环次数;地址自加1;薮据自加1汀呈序终止CODE SEGMENTASSUME CS:CODE, SS:SSIACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000HMOV CX, 16Ml:MOV SI , ALINC SIINC ALLOOP AA1MOV AX,4C00HI NIT 21HCODE ENDSEND START程序编辑界面3. 程序的汇编与连接:点击尊,编译文件,若程序编译无误,则可以继续点準进行链接,链接无误后方运行调试程序。XIAN TANG DU INSTRUMENTS CO.fLTD. WmdSG VE.2(C) Copyright 20096译.WmdSGI.obj - 0 errorfsjj 0 warning(s) 镂捱-Wmd861.exe - 0 errorls, 0 warning(s屮|_卜|轄译解试人结果/编译输出信息界面4. 观察程序及变量分配:点击“交叉文件”观察源程序代码与机器代码与存储形式。 点击“汇编程序”返回汇编程序窗口。操作练习:1、对上述程序进行观察。看汇编源程序的指令与机器码指令的对应关系及程序存放形式。2、打开程序EX1,观察变量定义及存放关系。3、打开EX32,观察变量定义及内存分配。5. 集成调试环境的使用:单步执行:点击“调试”菜单下的“单步”,可以一条一条的执行指令。查看修改寄存器:在调试过程中,可能通过调试窗口的“调试”选单,观察和修改CPU中寄存器的 内容。查看变量和存储单元内容:在调试过程中,可能通过调试窗口的“查看”选单,可以添加要查看的存 储单元或者变量的的内容。断点设置:在程序的对应指令行点击行号,可以设置程序断点(出现红色园点)。或者取消断点。 连续运行:点击调试菜单下的“GO”或让程序连续运行到断点处停止。操作练习:1、打开程序EX1,单步运行程序,观察寄存器及存储单元变化。并记录。3、打开EX32,观察变量定义及内存分配。单步运行程序,观察寄存器及存储单元 变化。并记录。6. TRUBODEBUGGER的使用:(详细说明见TRUBODEBUGGER 览表)进入TD:汇编连接完成后,点击“调试”菜单下的“TD。”可进入TRUBODEBUGGER调试环 境。单步执行:点击“STEP”可以一条一条的执行指令。查看修改寄存器:点击“VIEW”菜单下的“REGISTER”选单,可以观察和修改CPU中寄存器的 内容。查看和修改变量单元内容:点击“VIEW”菜单下的“VARIABLE”选单,可以观察和修改变量单元 的内容。查看和修改存储单元内容:点击“VIEW”菜单下的“DUMP”选单,可以观察和修改存储单元的内 容。断点设置:在程序的对应指令行点击,再点击“BKPT”,可以在该得设置断点。连续运行:点击“RUN”,让程序连续运行到断点处停止。操作练习:1、打开程序A1,单步和设置断点运行程序,观察寄存器及存储单元变化。程序观察程序运行前后 0000:3000 开始的十六个字节单元的数据。2、打开EX1,单步和设置断点运行程序,输入不同数,运行后检查变量X和XXX的 值,并记录。3、编写程序,将内存0000: 3500H单元开始的8个数据复制到0000: 3600H单元开始 的数据区中。通过调试验证程序功能。使用TD调试程序,先将0000: 3500H单元写入8个数,然后运 行程序,观察程序是否将数据复制到 0000:3600H 单元中。二、数制转换实验计算机与外设间的数制转换关系如图2-1 所示,数制对应关系如表 2-1 所示。二进制图 2-1 数制转换关系1操作练习:1、打开程序A1,单步和设置断点运行程序,观察寄存器及存储单元变化。 程序观察程序运行前后 0000:3000 开始的十六个字节单元的数据。2、打开EX1,单步和设置断点运行程序,输入不同数,运行后检查变量X和XXX的 值,并记录。3、编写程序,将内存0000: 3500H单元开始的8个数据复制到0000: 3600H单元开始 的数据区中。通过调试验证程序功能。使用TD调试程序,先将0000: 3500H单元写入8个数,然后运 行程序,观察程序是否将数据复制到 0000:3600H 单元中。2. 将 ASCII 码表示的十进制数转换为二进制数十进制表示为:D X 10n + D x 10n-1 + D x 100D X 10inn-10ii=0Dj代表十进制数0, 1, 2,,9;上式转换为: D X 10i = (.(D X10 + D)xio + D)X10 + + D )x 10 + D inn-Pn-2,170i=0由式可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操 作,依次类推,则可求出二进制数的结果。表 2-1 数制对应关系表十六进制BCD码二进制 机器码ASCII 码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA101041H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H程序流程图如图2-2所示。实验参考程序如下。实验程序清单(例程文件名:A2-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSDATA SEGMENTSADD DB 30H,30H,32H,35H,36H ;十进制数:00256DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AXMOV BX, 000AHMOV CX, 0004HMOV AH, 00HMOV AL, SISUB AL, 30HA1: IMUL BXMOV DX, SI+01图 2-2 转换程序流程图AND DX, 00FFHADC AX, DXSUB AX, 30HINC SILOOP A1A2:JMP A2CODEENDSEND START 实验步骤1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统。(2)待转换数据存放于数据段,根据自己要求输入,默认为30H, 30H, 32H, 35H, 36H。(3)在A2处设置断点,然后运行程序。(4)到断点后查看AX寄存器,即为转换结果,应为:0100 。5)数据区的数据修改为自己学号的后四位数据(如:03526),按照上面步骤运行程序,记录结果。6)修改数据区数据,按照上面步骤运行程序,验证程序的正确性,记录结果。4.将十进制数的ASCII码转换为BCD码从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD码后, 再按位分别存入350AH起始的内存单元内。若输入的不是十进制的ASCII码,则对应存放结果的单元内 容为“FF”。由表2-1可知,一字节ASCII码取其低四位即变为BCD码。实验步骤(1(2 34,35。 (3)在(4)实验程序清单(例程文件名:A2-2.ASM)SSTACKSEGMENTSTACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:XOR AX,AXMOV DSAXMOV CX,0005H;转换位数MOV DI,3500H;ASCII 码首地址A1:MOV BL,0FFH;将错误标志存入 BLMOV AL,DICMP AL,3AHJNB A2;不低于3AH则转A2SUB AL,30HJB A2;低于30H则转A2MOV BL,ALA2:MOV AL,BL; 结果或错误标志送入 ALMOV DI+0AH,AL; 结果存入目标地址INC DILOOP A1MOV AX,4C00HINT 21H; 程序终止CODEENDSEND START自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统。在0000: 3500H0000: 3504H单元中存放五位十进制数的ASCII码,即:31, 32, 33,MOV AX,4C00H 指令处设置断点,运行程序到断点。 0000: 350AH单元,显示运行结果,应为: 0000:350A 0102 03 04 05 CC 5)反复测试几组数据,验证程序功能。5.将十六位二进制数转换为ASCII码表示的十进制数十六位二进制数的值域为065535,最大可转换为五位十进制数。 五位十进制数可表示为:N = D4 X104 + D3 03 + D2 02 + D1 X 10 + DoDj:表示十进制数09将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1D4,并将它们转换为ASCII 码。自行绘制程序流程图,编写程序可参考例程。例程中源数存放于3500H、3501H中,转换结果存放 于3510H3514H单元中。实验步骤(1(2(3(4(5)编写程序,经编译、链接无误后,装入系统。实验程序清单(例程文件名:A2-3.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV SI,3500HMOV DX,SI;源数据地址MOV SI,3515H;目标数据地址A1:DEC SIMOV AX,DXMOV DX,0000HMOV CX,000AH;除数10DIV CXXCHG AX,DX;得商送AX,得余数送DXADD AL,30H;得Di的ASCII码MOV SI,ALCMP DX,0000H;存入目标地址JNE A1;判断转换结束否,未结束则转A1A2:CMP SI,3510H;与目标地址得首地址比较JZ A3DEC SIMOV AL,30HMOV SI,ALJMP A2;等于首地址则转A3,否则将剩余地址中填30HA3:MOV AX,4C00HINT 21H;程序终止CODEENDSEND START在 3500H、3501H 中存入 0C 00。 运行程序,待程序运行停止。检查运行结果,键入D3510,结果应为:30 30 30 31 32。 可反复测试几组数据,验证程序的正确性。6.十六进制数转换为ASCII码由表2.1中十六进制数与ASCII码的对应关系可知:将十六进制数0H09H加上30H后得到相应 的ASCII码,AHFH加上37H可得到相应的ASCII码。将四位十六进制数存放于起始地址为3500H 的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。自行绘制流程图。实验程序清单(例程文件名为 A2-4.ASM)DW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV CX,0004HMOV DI,3500HMOV DX,DI;十六进制数源地址A1:MOV AX,DXAND AX,000FHCMP AL,0AH;取低4位JB A2;小于0AH则转A2ADD AL,07H;在AFH之间,需多加上7HA2:ADD AL,30H;转换为相应ASCII码MOV DI+0DH,ALDEC DIPUSH CXMOV CL,04H;结果存入目标地址SHR DX,CLPOP CXLOOP A1MOV AX,4C00H;将十六进制数右移4位INT 21H;程序终止CODEENDSEND START实验步骤(1)编写程序,经编译、链接无误后装入系统。(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B 20。(3)先运行程序,待程序运行停止。(4)键入 D350A,显示结果为:0000:350A 32 30 33 42 CC 。(5)反复输入几组数据,验证程序功能。7. ECD码转换为二进制数将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起 始的内存单元中,自行绘制流程图并编写程序。实验程序清单(例程文件名为:A2-5.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:XORAX,AXMOVCX,0004HMOVSI,3500HMOVDI,3510HA1:MOVAL,SIADDAL,ALMOVBL,ALADDAL,ALADDAL,ALADDAL,BLINCSIADDAL,SIMOVDI, ALINCSIINCDILOOP A1MOV AX,4C00HINT 21H;程序终止CODE ENDSEND START 实验步骤(1) 编写程序,经编译、链接无误后装入系统。(2) 将四个二位十进制数的BCD码存入3500H3507H中,即: 先键入 E3500,然后输入 01 02 03 04 05 06 07 08。(3) 先运行程序,待程序运行停止。(4) 键入D3510显示转换结果,应为:0C 22 38 4E。(5) 反复输入几组数据,验证程序功能。8提高练习将上述程序数据部分全部改为变量形式,然后运行,通过变量查看运行结果。(例如:将十进制数的ASCII码转换为BCD码实验程序清单(例程文件名:A2-2A.ASM)SSTACKENDSDATASEGMENTASCNDB 31H,32H,33H,34H,35HBCDNDB 5 DUP(?)DATAENDSCODESEGMENTASSUME CS:CODE ,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX, 0005H;转换位数MOV DI, OFFSET ASCN;ASCII 码首地址A1:MOV BL, 0FFHMOV AL, DICMP AL, 3AH;将错误标志存入 BLJNB A2SUB AL, 30H;不低于3AH则转A2JB A2MOV BL, AL;低于30H则转A2A2:MOV AL, BL; 结果或错误标志送入 ALMOV DI+BCDN,ALINC DILOOP A1MOV AX,4C00H; 结果存入目标地址INT 21H; 程序终止CODEENDS)END START三、分支程序设计实验设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存 储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图2.14所示。FFFFFHFFFFFHFFFFFH(a)(b)(c)源数据块目的数据块源数据块目的数据块目的数据块源数据块图 4-1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图4-1 (a),数据的传送从数据块的首地址开始,或从数据块的末地 址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下 结论:当源数据块首地址V目的块首地址时,从数据块末地址开始传送数据,如图4-1 (b)所示。 当源数据块首地址目的块首地址时,从数据块首地址开始传送数据,如图4-1 (c)所示。 实验程序流程图如图 4-2 所示。I 开始 源数据块首地址-SI 源数据块首地址T SI 搬移字节数T CXDI J(SI)一SI J SI+1 DI J DI+1CX J CX-1CX J CX-1SI J SI+CX-1 DI J DI+CX-1DI J(SI)-SI J SI-1 DI J DI-1图 4-2 程序流程图实验程序清单(例程文件名为:A4-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:MOV CX, 0010HMOV SI, 3100HMOV DI, 3200HCMP SI, DIJA A2ADD SI, CXADD DI, CXDEC SIDEC DIA1:MOV AL, SI MOV DI, AL DEC SIDEC DIDEC CXJNE A1JMP A3A2:MOV AL, SIMOV DI, ALINC SIINC DIDEC CXJNE A2A3:MOV AX,4C00HINT 21H;程序终止CODEENDSEND START实验步骤1. 按流程图编写实验程序,经编译、链接无误后装入系统。2. 用E命令在以SI为起始地址的单元中填入16个数。3. 运行程序,待程序运行停止。4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。、循环程序设计实验实验内容及步骤1.计算 S=1+2X3 + 3X4 + 4X5+- + N (N+1),直到 N (N+1)项大于 200 为止。编写实验程序,计算上式的结果,参考流程图如图 5-1 所示。实验程序清单(例程文件名为:A5-1.ASM)SSTACKSEGMENT STACK DW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV DX,0001HMOV BL,02HA1:MOV AL,BLINC BLMUL BLADD DX,AXCMP AX,00C8HJNA A1MOV AX,4C00HINT 21HCODEENDSEND START;结果存于DX中; 判断 N(N+1) 与 200 的大小; 程序终止实验步骤(1)编写实验程序,编译、链接无误后装入系统。图 5-1 程序流程图(2) 运行程序,待程序运行停止。(3) 运算结果存储在寄存器DX中,查看结果是否正(4) 可以改变N (N+1)的条件来验证程序功能是否 但要注意,结果若大于0FFFFH将产生数据溢出。2. 求某数据区内负数的个数设数据区的第一单元存放区内单元数据的个数,从第二开始存放数据,在区内最后一个单元存放结果。为统计数据负数的个数,需要逐个判断区内的每一个数据,然后将所有 中凡是符号位为1的数据的个数累加起来,即得到区内所包 数的个数。实验程序流程图如图5-2所示。实验程序清单(例程文件名为:A5-2.ASM)SSTACKSEGMENTSTACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOV DI,3000H; 数据区首地址MOV CL,DI; 取数据个数XOR CH,CHMOV BL,CHINC DI; 指向第一个数据A1:MOV AL,DI确。正确,单元区内数据含负TEST AL, 80H;检查数据首位是否为1JE A2INC BL;负数个数加 1A2:INC DILOOP A1MOV DI, BLMOV AX,4C00H;保存结果INT 21H;程序终止CODEENDSEND START实验步骤(1) 按实验流程编写实验程序。(2) 编译、链接无误后装入系统。(3) 键入E3000,输入数据如下:3000 = 06 (数据个数)3001 = 123002 = 883003 = 823004 = 903005=223006=33图 5-2 程序流程图(4) 先运行程序,待程序运行停止。(5) 查看3007内存单元或寄存器BL中的内容,结果应为03。(6) 可以进行反复测试来验证程序的正确性。五、排序程序设计实验实验内容及步骤1. 气泡排序法 在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求采用气泡法对该数据区中的数据 按递增关系排序。设计思想:(1) 从最后一个数(或第一个数)开始,依次把相邻的两个数进行比较,即第N个数与第N1个 数比较,第N-1个数与第N-2个数比较等等;若第N-1个数大于第N个数,贝I两者交换,否则不交 换,直到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N个数的最前列。(2) 对剩下的N1个数重复(1)这一步,找到N1个数中的最小数。(3) 再重复(2),直到N个数全部排列好为止。实验程序清单(例程文件名为:A6-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKCODEENDSSEGMENTASSUME CS:CODESTART:MOV CX, 000AHMOV SI, 300AHMOV BL, 0FFHA1:CMP BL, 0FFHJNZ A4MOV BL, 00HDEC CXJZ A4PUSH SIPUSH CXA2:DEC SIMOV AL, SIDEC SICMP AL, SIJA A3XCHG AL, SIMOV SI+01H, ALMOV BL, 0FFHA3:INC SILOOP A2POP CXPOP SIJMP A1A4:MOV AX,4C00HINT 21H;程序终止CODEENDSEND START实验步骤(1) 分析参考程序,绘制流程图并编写实验程序。(2) 编译、链接无误后装入系统。(3) 键入E3000命令修改3000H3009H单元中的数,任意存入10个无符号数。4)先运行程序,待程序运行停止。(5) 通过键入D3000命令查看程序运行的结果。6)可以反复测试几组数据,观察结果,验证程序的正确性。2. 学生成绩名次表将分数在1100之间的10个成绩存入首地址为3000H的单元中,3000H + I表示学号为I的学生 成绩。编写程序,将排出的名次表放在3100H开始的数据区,3100H + I中存放的为学号为I的学生名 次。实验程序清单(例程文件名为:A6-2.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV AX,0000HMOV DS,AXMOV ES,AXMOV SI,3000H;存放学生成绩MOV CX,000AH;共 10 个成绩MOV DI,3100H;名次表首地址A1:CALL BRANCH;调用子程序MOV AL,0AHSUB AL,CLINC ALMOV BX,DXMOV BX+DI,ALLOOP A1MOV AX,4C00HINT 21H;程序终止;=扫描成绩表,得到最高成绩者的学号=BRANCH:PUSH CXMOVCX,000AHMOVAL,00HMOVBX,3000HMOVSI,BXA2:CMPAL,SIJAEA3MOVAL,SIMOVDX,SISUBDX,BXA3:INCSILOOP A2ADDBX,DXMOVAL,00HMOVBX,ALPOPCXRETCODEENDSENDSTART实验步骤1) 绘制流程图,并编写实验程序。2) 编译、链接无误后装入系统。(3)将10个成绩存入首地址为3000H的内存单元中。 4)调试并运行程序。(5)检查3100H起始的内存单元中的名次表是否正确。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!