资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1微机原理与接口技术实验讲义物理与电子工程学院罗长更2显示程序实验显示程序实验 3数据传送实验数据传送实验 5运算类程序实验运算类程序实验 6分支程序设计实验分支程序设计实验 17循环程序设计实验循环程序设计实验 20综合程序设计实验综合程序设计实验 223显示程序实验显示程序实验实验目的实验目的 (1) 掌握在 PC 机上以十六进制形式显示数据的方法。(2) 掌握部分 DOS 功能调用使用方法。(3) 熟悉 Tdpit 集成环境和调试器的使用。 实验内容及说明实验内容及说明 一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过 DOS 功能调用完成一些提示信息的显示。实验中可使用 DOS 功能调用(INT 21H)。 (1) 显示单个字符输出 入口:AH=02H 调用参数:DL=输出字符 (2) 显示字符串 入口:AH=09H 调用参数:DS:DX=串地址,$为结束字符 (3) 键盘输入并回显 入口:AH=01H 返回参数:AL=输出字符 (4) 返回 DOS 系统 入口:AH=4CH 调用参数:AL=返回码 实验步骤实验步骤 (1) 运行 Tdpit 软件,选择文件菜单,点击新建,进入一个源文件编辑界面。根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图 1 所示。 (2) 使用编译菜单中的编译和链接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 (5) 更改数据区中的数据,检查程序的正确性。 参考程序清单参考程序清单 DATASEGMENT MESDBShow a as hex:,0AH,0DH,$ SDDBa DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATA 29START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES;显示提示信息 MOV AH,09HINT 21HMOV DI,OFFSET SD MOV AL,DS:DI AND AL,0F0H;取高 4 位 SHR AL,4 图图 1 1CMP AL,0AH;是否是 A 以上的数 JBC2ADD AL,07HC2: ADD AL,30H MOV DL,AL;显示字符 1MOV AH,02H INT 21H MOV AL,DS:DI AND AL,0FH;取低 4 位 CMP AL,0AH JBC3 ADD AL,07H C3: ADD AL,30H MOV DL,AL;显示字符 MOV AH,02H INT 21H MOV AX,4C00H;返回 DOS INT 21H CODEENDS END START 数据传送实验数据传送实验实验目的实验目的 (1) 熟悉 Tdpit 集成环境和调试器的使用。 (2) 掌握与数据有关的不同寻址方式。 实验内容实验内容 本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。 实验步骤实验步骤 (1) 运行 Tdpit 软件,选择文件菜单,点击新建进行实验程序的编写。 (2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 (5) 更改数据区中的数据,考察程序的正确性。 参考程序:DDATASEGMENT;定义源数据段 MSRDB “HELLO,WORLD!$“ LENEQU $- MSR DDATAENDS EXDASEGMENT;定义附加数据段 MSDDB LEN DUP(?) 1EXDAENDS MYSTACK SEGMENT STACK;定义堆栈段 DW 20 DUP(?) MYSTACK ENDS CODESEGMENT;定义代码段 ASSUME CS:CODE,DS:DDATA,ES:EXDA START:MOV AX,DDATA MOV DS,AX;装载数据段寄存器 MOV AX,EXDA MOV ES,AX;装载附加数据段寄存器 MOV SI,OFFSET MSR;设置 SI MOV DI,OFFSET MSD;设置 DI MOV CX,LEN NEXT:MOV AL,SI;开始传输数据 MOV ES:DI,AL INC SI INC DIDEC CX JNZ NEXT PUSH ES POP DS;将附加段寄存器指向的段值赋给数据段寄存器 MOV DX,OFFSET MSDMOV AH,9 INT 21H MOV AX,4C00H;利用 DOS 功能调用返回 DOS 状态 INT 21H CODEENDS END START 将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示: MOV BX,0 MOV CX,LEN NEXT:MOV AL,MSRBX MOV ES:MSDBX,AL INC BX LOOP NEXT 运算类程序实验运算类程序实验实验目的实验目的 (1) 掌握运算类指令编程及调试方法。 1(2) 掌握运算类指令对各状态标志位的影响及测试方法。 实验内容及说明实验内容及说明 80x86 指令系统提供了实现加、减、乘、除运算的基本指令,可对表 1所示的数据类型进行算术运算。 表表 1 11 1二进制双精度加法运算二进制双精度加法运算 本实验要求计算 X+Y=Z,将结果 Z 输出到屏幕,其中X=001565A0H,Y=0021B79EH。 实验利用累加器 AX,先求低十六位和,并存入低址存储单元,后求高 16 位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用 ADC 指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF 中的 1。在 80386 以上微机中可以直接使用 32 位寄存器和 32 位加法指令完成本实验的功能。 2 2十进制数的十进制数的 BCDBCD 码减法运算码减法运算 本实验要求计算 X-Y=Z,其中,X、Y、Z 为 BCD 码,其中X=0400H,Y=0102H。 3 3乘法运算乘法运算 本实验要求实现十进制数的乘法,被乘数和乘数均以 BCD 码形式存放于内存中,被乘数为 54320H,乘数为 3H,运算结束后,将乘积在屏幕上显示。 4 4用减奇数开平方运算用减奇数开平方运算 80x86 指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N 个自然数中的奇数之和等于 N2,即: 1+3+5=9=32 1+3+5+7=16=42 1+3+5+7+9+11+13+15=64=82 若要做 S 的开方运算,那麽就可以从 S 中逐次减去自然数中的奇数1,3,5,7,一直进行到相减数为 0 或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是 S 的近似平方根。 本实验要求利用减奇法计算 0040H 的开平方值,并将运算结果显示在屏幕上。 实验步骤实验步骤 (1) 运行 Tdpit 软件,选择文件菜单进行实验程序的编写。 1(2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 (5) 更改数据区中的数据,考察程序的正确性。 参考程序参考程序 两个字节数据相加 STACK1 SEGMENT STACKDW 256 DUP(?) STACK1 ENDSDATA SEGMENT MES1DB The result is:$ X DB 03H Y DB 05H DATAENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,00H MOV SI,OFFSET XMOV AL,SIADD AL,SI+01H AND AL,0FH MOV BL,AL MOV DX,OFFSET MES1MOV AH,09HINT 21HMOV AX,BXCALLSHOWMOV AX,4C00HINT 21H SHOWPROCNEAR MOV AL,BL1AND AL,0F0H;取高 4 位SHR AL,4CMP AL,0AH;是否是 A 以上的数JBC2ADD AL,07H C2: ADD AL,30HMOV DL,AL;show character MOV AH,02HINT 21HMOV AL,BLAND AL,0FH;取低 4 位CMP AL,0AHJB C3ADD AL,07H C3: ADD AL,30HMOV DL,AL;show character MOV AH,02HINT 21H RETENDP CODE ENDSEND START ;A4-1.asm ;二进制双精度加法运算STACK1 SEGMENT STACKDW 256 DUP(?) STACK1 ENDSDATA SEGMENT MES1DB The result is:$ XL DW 65A0H XH DW 0015H YL DW 0B79EH YH DW 0021H DATAENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA1START: MOV AX,DATAMOV DS,AXMOVDX,OFFSET MES1MOVAH,09HINT21HMOV AX,XLADD AX,YLMOVBX,AXMOV AX,XHADC AX,YHPUSHBXCALLSHWORDPOP BXMOVAX,BXCALLSHWORDMOVAX,4C00HINT21H SHWORDPROCNEARMOVBL,AHCALLSHOWMOVBL,ALCALLSHOWRETENDP SHOWPROCNEARPUSHAXPUSHDXMOVAL,BLAND AL,0F0H;取高 4 位SHR AL,4CMP AL,0AH;是否是 A 以上的数JBC2ADD AL,07H C2: ADD AL,30HMOVDL,AL;show character MOVAH,02HINT21HMOVAL,BL1AND AL,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号