微机原理实验讲义资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验讲义
程曙艳编
厦门大学自动化系
2016年10月
汇编语言的上机过程
1、建立汇编语言的工作环境
至少有以下程序文件:
编辑程序,文件名,使用编辑程序代码生成*.asm。
汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件
连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件
调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行
(1)编辑
可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。
(2)汇编
在DOS状态执行masm 文件名,则屏幕显示与操作如下:
(3)连接
汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下:
(4)运行、调试
>DEBUG 文件名.exe
Debug运行后,出现状态提示符短划线-
常用debug命令:
D,显示内存单元内容
R,显示与修改寄存器内容
T、P,单步执行命令
G,连续执行指令
U,反汇编
Q,退出DEBUG程序
2. 汇编语言程序格式
汇编语言由若干个段组成:
堆栈段(保存数据、断点等信息)
代码段(存放指令)必需
数据段(定义数据,分配存储单元)
附加段(定义数据,分配存储单元)
每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾
STACK SEGMENT
......
STACK ENDS
DATA SEGMENT
......
DATA ENDS
ESEG SEGMENT
......
ESEG ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG
START:mov ax, data
mov ds, ax
mov ax, eseg
mov es, ax
mov ax, stack
mov ss, ax
……….
CODE ENDS
END START
3. 程序例题:
STACKS SEGMENT STACK ;堆栈段
DW 128 DUP(?)
STACKS ENDS
DATAS SEGMENT ;数据段
;请在这里定义您的数据
STRING DB 13,10,'Hello World!',13,10,'$'
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS: CODES, DS: DATAS START: MOV AX,DATAS ;初始化
MOV DS, AX
;请在这里添加您的代码
LEA DX, STRING ;显示字符串
MOV AH, 9
INT 21H
MOV AH,01 ;等待键盘输入
INT 21H
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START
软件实验部分
实验一二进制加、减法编程实验
一、实验要求和目的
1.熟悉汇编语言二进制多字节加法基本指令的使用方法;
2.熟悉汇编语言二进制多字节减法基本指令的使用方法;
3.掌握汇编语言编程的一般结构。
二、实验内容
(1)编写程序,实现长度为2字的两个数相加。
(2)编写程序,实现一个长度为2字的数和一个长度为1字的数相减。
实验二十进制数的BCD加、减法编程实验
一、实验要求和目的
1.熟悉BCD码的基本知识
2.熟悉汇编语言BCD码多字节加减法基本指令的使用方法;
3.掌握BCD码调整指令的使用方法。
二﹑实验内容
(1)编写程序,从键盘输入任意2个数,实现两数相加和相减,结果显示在屏幕上
实验三二进制乘、除法编程实验
一、实验要求和目的
1.熟悉数据的补码表示。
2.熟悉无符号数和有符号数乘法和除法指令的使用;
3.掌握符号位扩展指令的使用。
二﹑实验内容
1)被除数是一个2字长的有符号数,除数是一个1字长的有符号数,求两个数相除的商和余数。
(2)求两个2字长的无符号数相乘的结果,并将结果保存在存储空间中。
实验四ASCII码表示的十进制数、二进制数和BCD的互换
编程实验
一、实验要求和目的
1.了解汇编语言中的十进制、二进制、BCD码的表示形式;
2.了解BCD值和ASCII值的区别
3.了解如何查表进行数值转换及快速计算。
4.掌握利用汇编语言进行进制转换的方法。
二、实验内容
(1)将一个用ASCII码表示的多位十进制转换为二进制,要求十进制不大于65535,且输入数码为无符号数。
(2)将用ASCII码表示的数字串,转化为压缩的BCD码。
三、实验提示
(1)十进制数字串转二进制从最高位开始,重复进行“高位*10+低位”的操作,用公式表示为ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0 (2)将ASCII码转换为压缩BCD码,将ASCII码的高4位置0,再将十位ASCII 码的低4位左移至高4位,再与个位ASCII码相或。采用约定寄存器法传递参数。
实验五字符串操作编程实验
一、实验要求和目的
1.了解汇编语言字符串处理基本流程;
2.熟悉汇编语言字符串处理基本指令的使用方法;
3.掌握利用汇编语言实现字符串处理的程序设计方法。
二、实验内容
(1)编写程序,实现两个字符串比较,如相同,则显示“match”,否则,显示“NO MATCH”
(2)编写程序,统计一串字符串中某字符出现的次数。
实验六排序实验
一、实验要求和目的
1.;掌握用汇编语言编写排序程序的思路和方法
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、实验内容
(1)从键盘任意输入10个数,要求把这些数从小到大排序,并将结果输出在屏幕上。