1、8088微机原理及接口技术报告8088微机原理及接口技术报告 课程(项目)名称: 微机原理与接口技术 学 院: 自动化 专 业: 自控 姓 名: 学 号: 指导教师: 成 绩: 2021年 11 月 26 日 实验一 认识实验及多字节加减法程序 一、 任务与目的 1. 实验任务: (1) 熟悉和掌握MASM汇编程序及TD调试软件的使用; (2) 熟悉代码段、数据段、堆栈段的结构; (3) 掌握8086/8088汇编程序的结构; (4) 掌握多字节加减法程序的编写。 2. 实验目的: (1). 掌握8086/8088汇编程序及调试程序的基本使用方法; (2) 熟悉8086/8088汇编语言编写的
2、基本结构; (3) 熟悉多字节加减算术运算的基本方法。 二、原理(条件) 1. 相关知识: (1) MASM汇编程序及TD调试软件的使用方法; (2) 8086/8088汇编程序结构及算术运算等相关指令。 2.实验条件: MASM汇编程序及TD调试软件。 三、内容步骤 1启动TD(Turbo Debugger)输入程序段,观察执行情况并分析结果: (1) MOV BL,08H MOV CL,BL MOV AX,03FFH MOV BX,AX MOV 0200H,BX MOV ES:0300H,AX (2) MOV AX,0A268H MOV SI,9D1CH ADD AX,SI AX= 3F8
3、4H CF= 1 AF= 1 ZF= 0 PF= 1 OF= 1 SF= 0 ADD AL,30H AX= 3FB4H CF= 0 AF= 0 ZF= 0 PF= 1 OF= 0 SF= 1 ADC AX,0FFFFH AX= 3FB3H CF= 1 AF= 1 ZF= 0 PF= 0 OF= 0 SF= 0 分析:第一个是两个字相加,第二个是两个字节相加,第三个是两个字带进位相加,AX内结果改变的同时,FLAGS标志位也相应发生变化。 (3) 输入程序段,分步运行: MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708H PUSH AX PUS
4、H BX PUSH CX PUSH DX POP DX POP CX POP BX POP AX 分析:该段程序是对栈的操作,将AX,BX,CX,DX先后栈之后再出栈,观察到进栈出栈时栈内变化及SP指针值的变化。 2编写多字节加/减汇编程序,观察执行情况并分析结果 利用MASM宏汇编程序及TD程序进行调试。 (1) 编写多字节加法汇编程序: DATA * * DB 4FH,0B6H,7CH,34H,56H,1FH * DB 13H,24H,57H,68H,0FDH,9AH SUM DB 6 DUP(?) CONT DB 3 DATA ENDS CODE * ASSUME CS:CODE,DS:
5、DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET * MOV DI,OFFSET * MOV BX,OFFSET SUM MOV CL,CONT MOV CH,0 CLC GOON: MOV AX,SI SBB AX,DI INC SI INC SI INC DI INC DI MOV BX,AX INC BX INC BX LOOP GOON MOV AH,4CH INT 21H CODE ENDS END START (2) 编写多字节减法汇编程序: (3) 3编写多字节加/减汇编程序时,考虑最高字节相加或相减时产生进 位或借位程序应如何编写?
6、请思考。 四、数据处理(现象分析) 1、使用TD输入程序结果 (1) 分析:通过TD观察到执行一段程序相应的单元就跟着改变,将AX单元的值给BX单元,再将BX单元的值送入DS段中的0200H单元,最后将AX单元内容送入到ES段中偏移地址是0300H单元内。 (2) MOV AX,0A268H MOV SI,9D1CH ADD AX,SI AX= 3F84H CF= 1 AF= 1 ZF= 0 PF= 1 OF= 1 SF= 0 ADD AL,30H AX= 3FB4H CF= 0 AF= 0 ZF= 0 PF= 1 OF= 0 SF= 1 ADC AX,0FFFFH AX= 3FB3H CF=
7、 1 AF= 1 ZF= 0 PF= 0 OF= 0 SF= 0 分析:第一个是两个字相加,第二个是两个字节相加,第三个是两个字带进位相加,AX内结果改变的同时,FLAGS标志位也相应发生变化。 (3) 输入程序段,分步运行: MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708H PUSH AX PUSH BX PUSH CX PUSH DX POP DX POP CX POP BX POP AX 分析:该段程序是对栈的操作,将AX,BX,CX,DX先后栈之后再出栈,观察到进栈出栈时栈内变化及SP指针值的变化。 2、利用MASM宏汇编程序及TD
8、程序进行调试结果: (4) 编写多字节加法汇编程序: DATA * * DB 4FH,0B6H,7CH,34H,56H,1FH * DB 13H,24H,57H,68H,0FDH,9AH SUM DB 6 DUP(?) CONT DB 3 DATA ENDS CODE * ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET * MOV DI,OFFSET * MOV BX,OFFSET SUM MOV CL,CONT MOV CH,0 CLC GOON: MOV AX,SI SBB AX,DI INC SI INC
9、 SI INC DI INC DI MOV BX,AX INC BX INC BX LOOP GOON MOV AH,4CH INT 21H CODE ENDS END START 实验过程:将程序另存为.ASM文件放在根目录MASM所在文件夹中,在命令 符运行窗口输入CD-CDMASM-文件名.ASM-生成.OBJ文件,如无错误,则继续执行指令LINK,生产.EXE可执行文件,在TD内找到生成的可执行文件,设置中断之后运行,观察结果。 加法: (5) 编写多字节减法汇编程序: 将上述程序中的ADD AX, DI改为SBB AX, DI即可完成减法运算。 减法: 3、编写多字节加/减汇编程序时
10、,考虑最高字节相加或相减时产生 进位或借位程序应如何编写? 加法:在ADD AX,DI后加ADC AH, 0 减法:在SBB AX, DI后加 SBB AH, 1 五、结论 简单的字母和数字组合成的代码变成了计算机可以认识的机器语言,汇编语言是计算机最低层同时也是最难的语言。通过TD和MASM将代码变成计算机可执行的文件,模拟计算机内部的运行过程,达到目标结果。 六、参考资料 微机与接口技术实验指导书 七、评语 实验二 屏幕字符显示程序 一、任务与目的 1. 实验任务: (1) 熟悉和掌握利用DOS调用进行屏幕显示的方法; (2) 掌握屏幕字符显示程序的编写。 2. 实验目的: (1) 熟悉字
11、符串表示的语法结构; (2) 熟悉利用DOS调用编写字符屏幕显示的基本程序。 二、原理(条件) 2. 相关知识: (1) 字符串显示格式; (2) 熟悉DOS调用使用方法。 2.实验条件: MASM汇编程序及TD调试软件。 三、内容步骤 1编写程序在屏幕上显示“姓名拼音+学号”,观察执行 情况并分析结果。 2、编写程序从键盘输入一字符串,在字符串尾插入“$”,并显示该字符, 观察执行情况并分析结果。 四、数据处理(现象分析) 实验程序及结果如下: DATA * STRING DB liuyuying,*-*,have a nice day!,0DH,0AH,$ DATA END CODE *
12、ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,09H ;显示字符串功能号 INT 21H ;系统功能调用 MOV AH,4CH ;终止当前程序,返回调用程序 INT 21H CODE ENDS END START 分析:通过调用功能号09H显示字符串 DATA * * DB 40 ACTLEN DB ? CHARS DB 40 DUP(20H) DATA ENDS CODE * ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OF
13、FSET * MOV AH,0AH INT 21H XOR CX,CX MOV CL,ACTLEN MOV DX,OFFSET CHARS MOV BX,DX ADD BX,CX MOV BYTE PTRBX+2,$ MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 分析:定义字节类型变量*,占40个字节单元,定义字节型变量 ACTLEN为任意值存放实际输入字符数,定义字节型变量CHARS存放输入的字符串,占40个字节单元,初始值为20H,DX指向*的偏移地址,调用功能号0AH获得从键盘输入的字符串, 将CX内容清零后将ACTL
14、EN中的内容给CL得到字符串中字符的个数,将DX内容给BX ,BX与CX内容相加存入BX得到字符串尾地址,在BX+2处插入字符$,调用功能号显示从键盘输入的字符串。 五、结论 要在显示器上显示字符串,调用DOS功能的09H功能号,要实现调用还必须以$字符作为结束符。显示时在字符串结束前加上回车换行的ASCII码的0DH和0AH,在第二个实验中结果显示的第一个是所占字节单元的数所对应的ASCII码对应的字符,第二个是加上$在内的字符串中的字符数所对应的ASCII码,之后才是从键盘输入的字符串。 六、参考资料 微机原理与接口技术实验指导书 七、评语 实验三 数据比较及排序程序 一、任务与目的 1.
15、 实验任务: (1) 熟悉和掌握数据比较指令的用法; (2) 掌握多字节有符号数及无符号数排序程序的编写方法。 2. 实验目的 (1). 掌握数据比较指令的使用方法; (2) 熟悉数据排序实现的基本方法。 二、原理(条件) 3. 相关知识: (1) 数据比较指令的使用方法; (2) 8086/8088汇编程序数据排序的基本算法。 2.实验条件: MASM汇编程序及TD调试软件。 三、内容步骤 1启动TD(Turbo Debugger)输入程序段,观察执行情况、标志位变化并分析 结果。然后,AX 和BX互换一下数据再运行一遍,并观察结果。 (1) 无符号的比较 MOV AX, 2C76H MOV BX, 0FF80H CMP AX, BX JAE ABOVE ;注意ABOVE由具体地址替代,下同。 XCHG AX,BX ABOVE:HLT (2) 带符号数的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1