微机原理与接口技术实验教案(DOC 27页).doc

上传人(卖家):2023DOC 文档编号:5723090 上传时间:2023-05-05 格式:DOC 页数:28 大小:348.50KB
下载 相关 举报
微机原理与接口技术实验教案(DOC 27页).doc_第1页
第1页 / 共28页
微机原理与接口技术实验教案(DOC 27页).doc_第2页
第2页 / 共28页
微机原理与接口技术实验教案(DOC 27页).doc_第3页
第3页 / 共28页
微机原理与接口技术实验教案(DOC 27页).doc_第4页
第4页 / 共28页
微机原理与接口技术实验教案(DOC 27页).doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、-微机原理与接口技术实验讲义物理与电子工程学院罗长更显示程序实验3数据传送实验5运算类程序实验6分支程序设计实验17循环程序设计实验20综合程序设计实验22显示程序实验实验目的(1) 掌握在PC机上以十六进制形式显示数据的方法。(2) 掌握部分DOS功能调用使用方法。(3) 熟悉Tdpit集成环境和调试器的使用。实验内容及说明 一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H)。 (1) 显示单个字符输出

2、入口:AH=02H 调用参数:DL=输出字符 (2) 显示字符串 入口:AH=09H 调用参数:DS:DX=串地址,$为结束字符 (3) 键盘输入并回显 入口:AH=01H 返回参数:AL=输出字符 (4) 返回DOS系统 入口:AH=4CH 调用参数:AL=返回码 实验步骤 (1) 运行Tdpit软件,选择文件菜单,点击新建,进入一个源文件编辑界面。根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1所示。 (2) 使用编译菜单中的编译和链接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 使用编译菜单中的调试,调试程序,观察调试过程中,

3、数据传输指令执行后,各寄存器及数据区的内容。 (5) 更改数据区中的数据,检查程序的正确性。 参考程序清单 DATASEGMENT MESDBShow a as hex:,0AH,0DH,$ SDDBa DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATA START:MOV AX,DATA MOVDS,AX MOVDX,OFFSET MES;显示提示信息 MOVAH,09HINT 21H MOVDI,OFFSET SD MOVAL,DS:DI ANDAL,0F0H;取高4位 SHRAL,4 图1 CMPAL,0AH;是否是A以上的数 JBC2ADDAL,07H

4、C2:ADDAL,30HMOVDL,AL;显示字符 MOVAH,02H INT21H MOVAL,DS:DI ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07H C3:ADDAL,30H MOVDL,AL;显示字符 MOVAH,02H INT21H MOVAX,4C00H;返回DOS INT21H CODEENDS ENDSTART 数据传送实验 实验目的 (1) 熟悉Tdpit集成环境和调试器的使用。 (2) 掌握与数据有关的不同寻址方式。 实验内容 本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。实验步骤 (1) 运行Tdp

5、it软件,选择文件菜单,点击新建进行实验程序的编写。 (2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 (5) 更改数据区中的数据,考察程序的正确性。 参考程序:DDATASEGMENT;定义源数据段 MSRDB HELLO,WORLD!$ LENEQU $- MSR DDATAENDS EXDASEGMENT;定义附加数据段 MSDDB LEN DUP(?) EXDAENDS MYSTACK SEGMENT STACK;定义

6、堆栈段 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 ESPOP DS;将附加段寄存器指向的段值赋给

7、数据段寄存器 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) 掌握运算类指令编程及调试方法。 (2) 掌握运算类指令对各状态标志位的影响及测试方法。 实验内容及说明 80x86指令系统提供了实现加、减、乘、除运算的基本指令,可

8、对表1所示的数据类型进行算术运算。 表11二进制双精度加法运算 本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。 实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。 2十进制数的BCD码减法运算 本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。 3乘法运算 本

9、实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。 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或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,

10、它就是S的近似平方根。 本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。 实验步骤 (1) 运行Tdpit软件,选择文件菜单进行实验程序的编写。 (2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 (5) 更改数据区中的数据,考察程序的正确性。 参考程序两个字节数据相加STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1DBThe re

11、sult is:$X DB 03HY DB 05HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H MOV SI,OFFSET X MOV AL,SI ADD AL,SI+01H AND AL,0FH MOV BL,AL MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVAX,BX CALLSHOW MOVAX,4C00H INT21H SHOWPROCNEAR MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A

12、以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS END START;A4-1.asm;二进制双精度加法运算STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1DBThe result i

13、s:$XL DW 65A0HXH DW 0015HYL DW 0B79EHYH DW 0021HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOVDX,OFFSET MES1 MOVAH,09H INT21H MOV AX,XL ADD AX,YL MOVBX,AX MOV AX,XH ADC AX,YH PUSHBX CALLSHWORD POPBX MOVAX,BX CALLSHWORD MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MO

14、VBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE

15、 ENDS END START;A4-2.asm;十进制数的BCD码减法运算STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1DBThe result is:$X DW 0400HY DW 0102HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H SAHF MOV SI,OFFSET X MOV AL,SI SBB AL,SI+02H DAS PUSHF AND AL,0FH POPF MOV BL,AL I

16、NC SI MOV AL,SI SBB AL,SI+02H DAS PUSHF AND AL,0FH POPF MOV BH,AL MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVAX,BX CALLSHWORD MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL

17、,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START;A4-3.asm;乘法运算STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1 DB The result is:$ERRMES DB Error e

18、xist!$DATA1 DB 00H,02H,03H,04H,05HDATA2 DB 03HRESULTDB 06H DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,OFFSET DATA2 MOV BL,SI AND BL,0FH CMP BL,09H JNC ERROR MOV SI,OFFSET DATA1 MOV DI,OFFSET RESULT MOV CX,0005HA1: MOV AL,SI+04H AND AL,0FH CMP AL,09H JNC ERRO

19、R DEC SI MUL BL AAM ADD AL,DI+05H AAA MOV DI+05H,AL DEC DI MOV DI+05H,AH LOOP A1 MOVDX,OFFSET MES1 MOVAH,09H INT21H MOV CX,06H MOV SI,OFFSET RESULTA2: CALLSHOW MOVDL,20H MOVAH,02H INT21H INCSI LOOPA2 MOVAX,4C00H INT21HERROR: MOVDX,OFFSET ERRMES MOVAH,09H INT21H MOVAX,4C00H INT21HSHOWPROCNEAR MOVAL,D

20、S:SI ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,DS:SI ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS ENDSTART;A4-4.asm;用减奇法开平方运算STACK1 SEGMENT STACK DW 256 DUP

21、(?)STACK1 ENDSDDATASEGMENTMES1DBThe square root of $MES2DB is:$NUMBDW0040HDDATAENDSCODE SEGMENT ASSUME CS: CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVSI,OFFSET NUMB MOV AX,SI CALLSHWORD MOVDX,OFFSET MES2 MOVAH,09H INT21H MOVAX,SI MOV CL,00H MOV DX,0001HA1: SUB AX,

22、DX JB A2 INC CL ADD DX,02H JMP A1A2: MOVBL,CL CALLSHOW MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取

23、低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START 分支程序设计实验实验目的 掌握分支程序的设计方法。 实验内容及说明 程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图1所示。本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。 图1 图2实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。在循环

24、操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。当循环结束操作时,将BH,BL分别送屏幕显示。参考实验流程如图2所示。实验步骤 (1) 运行Tdpit软件,选择文件菜单编写实验程序;提供8字节的数据:0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。 (2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 更改数据区中的数据,考察程序的正确性。 参考程序;A5.asm;分支程序设计实验STACK1 SEGMENT STACK

25、 DW 256 DUP(?)STACK1 ENDSDDATASEGMENTMES1DB The least number is:$MES2 DB 0AH,0DH,The largest number is:$NUMBDB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9HDDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOV SI,OFFSET NUMB MOV CX,0008H JCXZ A4 MOV BH,SI MOV BL,BHA1: LODSB;AL=DS:SI,SI=S

26、I+1 CMP AL,BH JBE A2 MOV BH,AL JMP A3A2: CMP AL,BL JAE A3 MOV BL,ALA3: LOOP A1A4: MOVDX,OFFSET MES1;show mes1 MOVAH,09H INT 21H MOVAL,BL;show the least number ANDAL,0F0H;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;g

27、et the lowest 4 bits CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVDX,OFFSET MES2;show mes2 MOVAH,09H INT 21H MOVAL,BH;show the largest number ANDAL,0F0H;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC22 ADDAL,07HC22: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT2

28、1H MOVAL,BH ANDAL,0FH;get the lowest 4 bits CMPAL,0AH JBC33 ADD AL,07HC33: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAX,4C00H;go back to dos INT21HCODE ENDS END START 循环程序设计实验 实验目的 掌握循环程序的设计方法。 实验内容及说明 本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据

29、的个数累加起来,即得到区内所包含负数的个数。循环程序的结构示意如图1所示。 实验步骤 (1) 运行Tdpit软件,选择文件菜单编写实验程序。提供10字节的数据:12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H。 (2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用编译菜单中的运行,运行程序,观察运行结果。 (4) 更改数据区中的数据,考察程序的正确性。 ;A6.asm;循环程序设计实验STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDDATASEGMENTNUMBDB12H,88H,82H,89H,

30、33H,90H,01H,10H,0BDH,01HMES1DBThe number of negative is:$DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOVDI,OFFSET NUMB XORBH,BH MOVCX,10DA1: MOV AL,DI TEST AL,80H JE A2 INC BLA2: INC DI LOOP A1 MOVDX,OFFSET MES1 ;show mes MOVAH,09H INT 21H MOVAL,BL ;show the number of neg

31、ative ANDAL,0F0H ;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL ;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH ;get the lowest 4 bits CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL ;show character MOVAH,02H INT21H MOVAX,4C00H ;go back to dos INT21HCODE ENDS END

32、START综合程序设计实验 实验目的 (1) 掌握分支、循环、子程序调用的基本程序结构。 (2) 掌握32位寄存器、指令使用的基本方法。 (3) 学习综合程序的设计、编制及调试。 实验内容及步骤 1排序实验 本实验要求编写一个程序,对存贮区中的一组双字进行排序,并将排序结果显示在屏幕上。在编写过程中,应使用32位寄存器,并且采用基址+变址+偏移的寻址方式。在程序中使用80x86指令系统中有关32位的指令、寻址方式及32位寄存器时需要在文件头使用“.386”或“.386p”。 具体实验步骤如下: (1) 运行Tddebug软件,选择Edit菜单编写实验程序。 (2) 使用Compile菜单中的C

33、ompile和Link对实验程序进行汇编、连接。 (3) 使用Rmrun菜单中的Run,运行程序,观察运行结果。 (4) 更改数据区中的数据,考察程序的正确性。 2用32位寄存器、指令、扩展寻址方式实现数码转换及显示 本实验要求将一组ASCII字符转换成十六进制数码,并在屏幕上显示出来。要求使用32位寄存器、32位的指令和寻址方式。如将字符串“This is tangdu speaking!”进行转换,应转换成:54H、68H、69H、73H、20H、69H、73H、20H、74H、61H、6EH、67H、64H、75H、20H、73H、70H、65H、61H、6BH 、69H、6EH、67H

34、、21H。 具体实验步骤如下。 (1) 运行Tdpit软件,选择文件菜单编写实验程序。 (2) 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 (3) 使用运行菜单中的运行,运行程序,观察运行结果。 (4) 更改数据区中的数据,考察程序的正确性。 参考程序:一维字节数据排序STACK1 SEGMENT STACK USE16DB64DUP(?)STACK1 ENDSDATASEGMENTUSE16MES1DBThe array is:$MES2DBAfter sort:$DATA1DB15H,0D8H,02H,04H,09H,44H,03H,32HCOUNT=8DATAENDSCODES

35、EGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATA ;显示未排序的数组 MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT 21H CALLKENTER CALLSAHEX CALLKENTER CALLBUBBLE;显示排序后的数组 MOVDX,OFFSET MES2 MOVAH,09H INT21H CALLKENTER CALLSAHEX CALLKENTER MOVAX,4C00H INT21HBUBBLEPROC XORSI,SI XORCX,CX MOVSI,OFFSET DATA1 MOVCX,COUNTL1:

36、 XORBX,BX XORAX,AXL2: CMPBX,CX JAELB MOVAL,SI+BX+1 MOV DL,SI+BX CMPSI+BX,AL JAELNS XCHGSI+BX,AL MOVSI+BX+1,ALLNS: INCBX JMPL2LB: LOOPL1 RETBUBBLEENDPSAHEXPROCNEAR XORSI,SI XORCX,CX MOVSI,OFFSET DATA1 MOVCX,COUNTC1: MOVBX,CX DECBX MOVAL,DS:SI+BX ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL MOVAH,02H INT21H;显示字符 MOVAL,DS:SI+BX ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;显示字符 MOVAH,02H

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

当前位置:首页 > 办公、行业 > 待归类文档
版权提示 | 免责声明

1,本文(微机原理与接口技术实验教案(DOC 27页).doc)为本站会员(2023DOC)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|