微机原理实验讲义资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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个数,要求把这些数从小到大排序,并将结果输出在屏幕上。

相关文档
最新文档