当前位置:文档之家› 微机原理与接口课程设计报告模板(参考)

微机原理与接口课程设计报告模板(参考)

《微机原理与接口技术》课程设计报告班级:学号:姓名:201X年X月目录实验一显示程序实验 (2)实验二数据传送实验 (4)实验三数码转换程序实验 (6)实验四运算类程序实验 (15)实验五分支程序设计实验 (18)实验一显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS 功能调用使用方法;3. 熟悉Tddebug 调试环境和Turbo Debugger 的使用。

二、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。

本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS 功能调用完成一些提示信息的显示。

实验中可使用DOS 功能调用(INT 21H )。

(1) 显示单个字符输出入口:AH=02H调用参数:DL= 输出字符(2) 显示字符串入口:AH=09H调用参数:DS:DX=串地址,’$’为结束字符(3) 键盘输入并回显入口:AH=01H返回参数:AL= 输出字符(4) 返回DOS 系统入口:AH=4CH调用参数:AL= 返回码三、实验设备PC微机一台四、实验代码DATA SEGMENTMES DB 'Show a as hex:', 0AH,0DH,'$'SD DB 'a'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, OFFSET MES ;显示提示信息MOV AH, 09HINT 21HMOV DI, OFFSET SDMOV AL, DS:[DI]AND AL, 0F0H ;取高4位SHR AL,4CMP AL, 0AH ;是否是A以上的数JB C2ADD AL, 07HC2: ADD AL, 30HMOV DL, AL ;显示字符MOV AH, 02HINT 21HMOV AL, DS:[DI]AND AL, 0FH ;取低4位CMP AL, 0AHJB C3ADD AL, 07HC3: ADD AL, 30HMOV DL, AL ;显示字符MOV AH, 02HINT 21HMOV AX, 4C00H ;返回DOSINT 21HCODE ENDSEND START五、运行结果实验二数据传送实验一、实验目的1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。

二、实验所用设备1. PC微机一台。

三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

参考实验程序:DDATA SEGMENT ;定义源数据段MSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENT ;定义附加数据段MSD DB LEN DUP(?)EXDA ENDSMYSTACK SEGMENT STACK ;定义堆栈段DW 20 DUP(?)MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE, DS:DDATA, ES:EXDASTART: MOV AX, DDATAMOV DS, AX ;装载数据段寄存器MOV AX, EXDAMOV ES,AX ;装载附加数据段寄存器MOV SI, OFFSET MSR ;设置SIMOV DI, OFFSET MSD ;设置DIMOV CX, LENNEXT: MOV AL, [SI] ;开始传输数据INC SIINC DIDEC CXJNZ NEXTPUSH ESPOP DS ;将附加段寄存器的段值赋给数据段寄存器MOV DX, OFFSET MSDMOV AH, 9INT 21HMOV AX, 4C00H ;利用DOS功能调用返回DOS状态INT 21HCODE ENDSEND START将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:MOV BX, 0MOV CX, LENNEXT: MOV AL, MSR[BX]MOV ES:MSD[BX], ALINC BXLOOP NEXT四、实验步骤1.运行Tddebug软件,选择Edit菜单编写实验程序;2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3.使用Rmrun菜单中的Run,运行程序,观察运行结果;4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5.更改数据区中的数据,考察程序的正确性。

五、实验运行结果实验三数码转换程序实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法。

二、实验所用设备PC微机一台。

三、实验内容计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。

因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。

计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。

图3-1 计算机与外设间的数码转换关系1.将ASCII码表示的十进制数转换为二进制数十进制数可以表示为:Dn×10n+Dn-1×10n-1+…+D0×100=Di×10i 其中Di代表十进制数1、2、3…9、0。

上式可以转换为:ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。

《微机原理与接口技术》课程设计报告本实验要求将缓冲区中的一个五位十进制数00012的ASCII 码转换成二进制数,并将转换结果按位显示在屏幕上。

转换过程的参考流程如图3-2所示。

表3-1 数码转换对应关系2.将十进制数的ASCII 码转换为BCD 码本实验要求将键盘输入的一个五位十进制数54321的ASC II 码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。

若输入的不是十进制数的ASC II 码,则输出“FF”。

提示:一字节ASC II 码取其低四位即变为BCD 码。

转换部分的实验流程参见3-3。

3.将十六进制数的ASCII 码转换为十进制数十六位二进制数的值域为0-65535,最大可转换为五位十进制数。

五位十进制数可表示为: N D =D 4×104+D 3×103+D 2×102+D 1×10+D 0因此,将十六位二进制数转换为五位ASCII 码表示的十进制数,就是求D 1-D 4,并将它们转化为ASCII 码。

图3-2 十进制ASCII 转换为二进制数参考流程图3-3 十进制ASCII 转换为BCD 码参考流程本实验要求将缓冲区中存放的000CH 的ASCII 码转换成十进制数,并将转换结果显示在屏幕上。

转换部分的实验流程参见图3-4。

4.BCD 码转换为二进制码本实验要求将四个二位十进制数的BCD 码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。

转换部分的实验流程参见3-5。

四、实验步骤1. 运行Tddebug 软件,选择Edit 菜单编写实验程序;2. 使用Compile 菜单中的Compile 和Link 对实验程序进行汇编、连接;3. 使用Rmrun 菜单中的Run ,运行程序,观察运行结果;4. 使用Rmrun 菜单中的Debug ,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。

五、实验代码1.将ASCII码表示的十进制数转换为二进制数DATA SEGMENTSTRING DB 'Input:','$'NUM DB 6, ?, 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX, DATAMOV DS, AXCALL INPUTCALL CHANGECALL LIST_BXMOV AH, 4CHINT 21HINPUT PROCLEA DX , STRINGMOV AH , 09HINT 21HLEA DX , NUMMOV AH , 0AHINT 21HRETINPUT ENDPCHANGE PROCLEA SI, NUM+2MOV CL, NUM+1MOV CH, 0MOV AX, 0MOV DI, 10NEXT: MUL DIMOV BH, 0MOV BL, [SI]AND BL, 0FHADD AX, BXINC SILOOP NEXTZERO: MOV BX, AXRETCHANGE ENDPADD DL, 07HLIST_BX PROCMOV DL,0DHINT 21HMOV DL,0AHMOV AH,2INT 21HMOV CH, 4MOV CL, 4NEXT1: ROL BX, CLMOV DL, BLAND DL, 0FHADD DL, 30HCMP DL, 39HJLE PRINTPRINT: MOV AH, 2HINT 21HDEC CHJNZ NEXT1RETLIST_BX ENDPCODE ENDSEND START2.将十进制数的ASCII码转换为BCD码DATA SEGMENTD1 DB 6,?,6 DUP(?)D2 DB 5 DUP(?)D3 DB 'FF$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET D1MOV AH,0AHINT 21HMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HMOV CL,D1+1MOV CH,0L1: MOV AL,D1[SI+2]CMP AL,30HJB L2CMP AL,39HJA L2AND AL,0FHMOV D2[SI],ALINC SILOOP L1MOV CL,D1+1MOV SI,0L4: MOV DL,D1[SI+2]MOV AH,2INT 21HINC SILOOP L4JMP L3L2: MOV DX,OFFSET D3MOV AH,09HINT 21HL3: MOV AH,4CHINT 21HCODE ENDSEND START3.将十六进制数的ASCII码转换为十进制数DATA SEGMENTD1 DB '000C'C1 EQU $-D1D2 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV CX,C1MOV SI,OFFSET D1MOV BX,10HMOV AX,0L1: MOV DL,[SI]SUB DL,30HCMP DL,9JBE L2SUB DL,7H ;十六进制数大写,若小写,减27h L2: MOV DH, 0PUSH DXMUL BXPOP DXADD AX,DXINC SIDEC CXJNZ L1MOV D2,AXMOV BX,10000MOV DX,0DIV BXPUSH DXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV BX,1000MOV DX,0DIV BXPUSH DXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV BX,100MOV DX,0DIV BXPUSH DXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV BX,10MOV DX,0DIV BXPUSH DXMOV DL,ALADD DL,30HMOV AH,2POP AXMOV DL,ALADD DL,30HMOV AH,24.BCD转换为二进制码DATA SEGMENTD1 DB 12H,34H,56H,78HC1 EQU $-D1D2 DB C1 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV CH,C1MOV CL,4MOV SI,0MOV BH,10L1: MOV AL,D1[SI]MOV BL,ALAND BL,0FHAND AL,0F0HSHR AL,CLMUL BHADD AL,BLMOV D2[SI],ALINC SIDEC CHJNZ L1L2: MOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HMOV AL,D2[SI]MOV DL,ALAND DL,0F0HSHR DL,CLADD DL,30HCMP DL,39HJNA L3ADD DL,7L3: PUSH AXINT 21HPOP AXAND AL,0FHMOV DL,ALADD DL,30HCMP DL,39HJNA L4ADD DL,7L4: MOV AH,2INT 21HINC SI六、实验运行结果1.2.3.4.实验四运算类程序实验一、实验目的1. 掌握运算类指令编程及调试方法;2. 掌握运算类指令对各状态标志位的影响及测试方法。

相关主题