《微机原理与接口技术》
课程设计报告
班级: 学号: 姓名:
201X年X月
《微机原理与接口技术》课程设计报告
目 录
实验一 实验二 实验三 实验四 实验五
显示程序实验..................................2 数据传送实验 .................................4 数码转换程序实验 .............................6 运算类程序实验................................15 分支程序设计实验 .............................18
- 1 -
《微机原理与接口技术》课程设计报告
实验一 显示程序实验
一、实验目的
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 SEGMENT
MES DB 'Show a as hex:', 0AH,0DH,'$' SD DB 'a' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX
MOV DX, OFFSET MES ;显示提示信息 MOV AH, 09H
- 2 -
《微机原理与接口技术》课程设计报告
INT 21H
MOV DI, OFFSET SD MOV AL, DS:[DI]
AND AL, 0F0H ;取高4位 SHR AL,4
CMP AL, 0AH ;是否是A以上的数 JB C2
ADD AL, 07H
C2: ADD AL, 30H MOV DL, AL ;显示字符 MOV AH, 02H INT 21H
MOV AL, DS:[DI]
AND AL, 0FH ;取低4位 CMP AL, 0AH JB C3
ADD AL, 07H
C3: ADD AL, 30H MOV DL, AL ;显示字符 MOV AH, 02H INT 21H
MOV AX, 4C00H ;返回DOS INT 21H CODE ENDS END START
五、运行结果
- 3 -
《微机原理与接口技术》课程设计报告
实验二 数据传送实验
一、实验目的
1. 熟悉Tddebug调试环境和Turbo Debugger的使用; 2. 掌握与数据有关的不同寻址方式。
二、实验所用设备
1. PC微机一台。
三、实验内容
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。 参考实验程序:
DDATA SEGMENT ;定义源数据段 MSR DB \"HELLO,WORLD!$\" LEN EQU $- MSR DDATA ENDS
EXDA SEGMENT ;定义附加数据段 MSD DB LEN DUP(?) EXDA ENDS
MYSTACK SEGMENT STACK ;定义堆栈段
DW 20 DUP(?)
MYSTACK ENDS
CODE SEGMENT ;定义代码段
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] ;开始传输数据
INC SI INC DI DEC CX JNZ NEXT PUSH ES
POP DS ;将附加段寄存器的段值赋给数据段寄存器 MOV DX, OFFSET MSD
- 4 -
《微机原理与接口技术》课程设计报告
MOV AH, 9 INT 21H
MOV AX, 4C00H ;利用DOS功能调用返回DOS状态 INT 21H
CODE ENDS END START
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOV BX, 0 MOV CX, LEN
NEXT: MOV AL, MSR[BX]
MOV ES:MSD[BX], AL INC BX
LOOP NEXT
四、实验步骤
1. 运行Tddebug软件,选择Edit菜单编写实验程序;
2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;
4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,
各寄存器及数据区的内容;
5. 更改数据区中的数据,考察程序的正确性。
五、实验运行结果
- 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加次位的操作,依次类推,则可求出二进制数结果。
- 6 -
《微机原理与接口技术》课程设计报告
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。转换过程的参考流程如图3-2所示。 表3-1 数码转换对应关系
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数321的ASCII码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一字节ASCII码取其低四位即变为BCD码。转换部分的实验流程参见3-3。 3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为: ND=D4×10+D3×10+D2×10+D1×10+D0
因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
4
3
2
- 7 -
《微机原理与接口技术》课程设计报告
图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. 更改数据区中的数据,考察程序的正确性。
五、实验代码
- 8 -
《微机原理与接口技术》课程设计报告
1.将ASCII码表示的十进制数转换为二进制数 DATA SEGMENT
STRING DB 'Input:','$'
NUM DB 6, ?, 6 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA START: MOV MOV CALL CALL CALL MOV INT INPUT PROC
LEA MOV INT LEA MOV INT RET INPUT ENDP CHANGE PROC
LEA MOV MOV MOV MOV NEXT: MUL MOV MOV AND ADD INC LOOP ZERO: MOV RET CHANGE ENDP
ADD LIST_BX PROC
MOV
AX, DATA DS, AX INPUT CHANGE LIST_BX AH, 4CH 21H DX , STRING AH , 09H 21H
DX , NUM AH , 0AH 21H SI, NUM+2 CL, NUM+1 CH, 0 AX, 0 DI, 10 DI
BH, 0 BL, [SI] BL, 0FH AX, BX SI NEXT BX, AX DL, 07H DL,0DH
- 9 -
《微机原理与接口技术》课程设计报告
MOV AH,2 INT 21H
MOV DL,0AH MOV AH,2 INT 21H MOV CH, 4 MOV CL, 4 NEXT1: ROL BX, CL MOV DL, BL AND DL, 0FH ADD DL, 30H CMP DL, 39H JLE PRINT
PRINT: MOV AH, 2H INT 21H DEC CH JNZ NEXT1 RET LIST_BX ENDP CODE ENDS END START
2.将十进制数的ASCII码转换为BCD码
DATA SEGMENT
D1 DB 6,?,6 DUP(?) D2 DB 5 DUP(?) D3 DB 'FF$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DX,OFFSET D1 MOV AH,0AH INT 21H
MOV DL,0DH MOV AH,2 INT 21H
MOV DL,0AH MOV AH,2 INT 21H
MOV CL,D1+1 MOV CH,0
- 10 -
《微机原理与接口技术》课程设计报告
MOV SI,0
L1: MOV AL,D1[SI+2] CMP AL,30H JB L2
CMP AL,39H JA L2
AND AL,0FH MOV D2[SI],AL INC SI LOOP L1
MOV CL,D1+1 MOV SI,0
L4: MOV DL,D1[SI+2] MOV AH,2 INT 21H INC SI LOOP L4 JMP L3
L2: MOV DX,OFFSET D3 MOV AH,09H INT 21H L3: MOV AH,4CH INT 21H CODE ENDS
END START
3.将十六进制数的ASCII码转换为十进制数
DATA SEGMENT
D1 DB '000C' C1 EQU $-D1 D2 DW ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,C1
MOV SI,OFFSET D1 MOV BX,10H MOV AX,0 L1: MOV DL,[SI] SUB DL,30H CMP DL,9 JBE L2
- 11 -
《微机原理与接口技术》课程设计报告
SUB DL,7H ;十六进制数大写,若小写,减27h L2: MOV DH, 0 PUSH DX MUL BX POP DX
ADD AX,DX INC SI DEC CX JNZ L1
MOV D2,AX
MOV BX,10000
MOV DX,0 DIV BX PUSH DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POP AX
MOV BX,1000 MOV DX,0 DIV BX PUSH DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POP AX
MOV BX,100 MOV DX,0 DIV BX PUSH DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POP AX MOV BX,10 MOV DX,0 DIV BX PUSH DX MOV DL,AL ADD DL,30H MOV AH,2
- 12 -
《微机原理与接口技术》课程设计报告
INT 21H POP AX MOV DL,AL ADD DL,30H MOV AH,2 4.BCD转换为二进制码 DATA SEGMENT
D1 DB 12H,34H,56H,78H C1 EQU $-D1
D2 DB C1 DUP (?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CH,C1 MOV CL,4 MOV SI,0 MOV BH,10 L1: MOV AL,D1[SI] MOV BL,AL AND BL,0FH AND AL,0F0H SHR AL,CL MUL BH ADD AL,BL MOV D2[SI],AL INC SI DEC CH JNZ L1 L2: MOV DL,0DH
MOV AH,2 INT 21H
MOV DL,0AH MOV AH,2 INT 21H
MOV AL,D2[SI] MOV DL,AL AND DL,0F0H SHR DL,CL ADD DL,30H CMP DL,39H JNA L3 ADD DL,7 L3: PUSH AX
- 13 -
《微机原理与接口技术》课程设计报告
MOV AH,2 INT 21H POP AX
AND AL,0FH MOV DL,AL ADD DL,30H CMP DL,39H JNA L4 ADD DL,7 L4: MOV AH,2 INT 21H INC SI
六、实验运行结果
1.
2.
3. 4.
- 14 -
《微机原理与接口技术》课程设计报告
实验四 运算类程序实验
一、实验目的
1. 掌握运算类指令编程及调试方法;
2. 掌握运算类指令对各状态标志位的影响及测试方法。
二、实验所用设备
1. PC微机一台。
三、实验内容
80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示的数据类型进行算术运算。
表
4-1 数据类型算术运算表
1.二进制双精度加法运算
本实验要求计算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.乘法运算
本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为320H,乘数为3H,运算结束后,将乘积在屏幕上显示。
4.用减奇数开平方运算
80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于N2,即:1+3+5=9=3
1+3+5+7=16=4
- 15 -
2
2
《微机原理与接口技术》课程设计报告
1+3+5+7+9+11+13+15==8
若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7…,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。
本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。
2
四、实验步骤
1. 运行Tddebug软件,选择Edit菜单编写实验程序;
2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;
4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据
区的内容;
5. 更改数据区中的数据,考察程序的正确性。
五、实验代码 二进制双精度加法运算
DATA SEGMENT
X DW 65A0H,0015H Y DW 0B79EH,0021H Z DW 2 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,2 CLC
MOV SI,0 L1: MOV AX,X[SI] ADC AX,Y[SI] MOV Z[SI],AX INC SI INC SI LOOP L1
MOV BX,Z[2] CALL LIST_BX MOV BX,Z CALL LIST_BX MOV AH,4CH INT 21H LIST_BX PROC
MOV CH,4
- 16 -
《微机原理与接口技术》课程设计报告
MOV CL,4 NEXT: ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39H JLE PRINT ADD DL,7 PRINT: MOV AH,2 INT 21H DEC CH JNZ NEXT RET LIST_BX ENDP CODE ENDS
END START
五、实验运行结果
- 17 -
《微机原理与接口技术》课程设计报告
实验五 分支程序设计实验
一、实验目的
1. 掌握分支程序的设计方法。
二、实验所用设备
1. PC微机一台。
三、实验内容
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1所示。本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
图5-1 分支结构示意图
实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程
序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。当循环结束操作时,将BH,BL分别送屏幕显示。参考实验流程如图5-2所示。
四、实验步骤
1. 运行Tddebug软件,选择Edit菜单编写实验程序,提供8字节的数据:0D9H,07H,8BH,0C5H,0EBH,
04H,9DH,0F9H;
2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 更改数据区中的数据,考察程序的正确性。
五、实验代码
DATA SEGMENT
- 18 -
《微机原理与接口技术》课程设计报告
D1 DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H C1 EQU $-D1 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,C1-1 MOV SI,0
MOV BL,D1[SI] MOV BH,D1[SI] L1: INC SI
MOV AL,D1[SI] CMP AL,BL JNB L2
MOV BL,AL L2: CMP AL,BH JNA L3
MOV BH,AL L3: LOOP L1 CALL DISP MOV DL,0AH MOV AH,2 INT 21H
MOV DL,0DH MOV AH,2 INT 21H MOV BL,BH CALL DISP MOV AH,4CH INT 21H DISP PROC
MOV CH,2 MOV CL,4 NEXT: ROL BL,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39H JLE PRINT ADD DL,7 PRINT: MOV AH,2 INT 21H DEC CH
- 19 -
《微机原理与接口技术》课程设计报告
JNZ NEXT RET DISP ENDP CODE ENDS
END START
五、实验运行结果
- 20 -
《微机原理与接口技术》课程设计报告
- 21 -
《微机原理与接口技术》课程设计报告
课程设计实验感想
- 22 -
《微机原理与接口技术》课程设计报告
指导教师评语
成绩(百分制)__________________
指导教师签字:
年 月 日
- 23 -
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务