微机原理:EMU8086使用及指令系统熟悉

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[公司名称]

实验一

EMU8086使用及指令系统熟悉微机原理上机实验

[日期]

一、实验要求

1.熟悉并掌握EMU8086 汇编语言调试环境;

2.学习8086的指令系统,输入简单的指令,观察各寄存器、内存相关单元以及处理器标志位的变化(数据传送类指令,算数运算类指令,逻辑运算类指令,标志处理和CPU控制类指令,移位和循环移位类指令,处理器控制类指令等,要求每类指令至少一个用例。具体用例自行设计,可参考教材用例);

3.学习汇编语言程序设计的基本步骤和方法;

4.学会使用EMU8086 debug调试程序;

5.编写一个简单的程序:将“This is my first ASM program-姓名(汉语拼音各人的姓名)”放在DS=1000H,BX=0000H开始的存储器单元中,然后将该内容搬移到BX=0100H开始的单元中,最后将该字符串通过DOS功能调用显示在屏幕上。

二、实验目的

1.学习EMU8086仿真开发环境的使用,理解和掌握汇编语言编程的基本步骤;

2.熟悉8086指令系统;

3.熟悉变量、常量及伪指令的使用;

4.熟悉内存单元的存储结构,字符串的处理以及简单的编程。

三、实验过程(调试分析)

3.1熟悉并掌握EMU8086汇编调试环境

此为EMU8086新建汇编源程序的界面,对应有四种模板可以挑选:

①COM——无需分段,所有内容均放在代码段中,程序代码默认从ORG 0100H开始

②EXE——需要分段,内容按代码段、数据段、堆栈段划分,编译器自动完成空间的分配

③BIN——二进制文件,适用于所有用户定义的结构类型

④BOOT——适用于在软盘中创建的文件

⑤empty workspace可以创建空的文档

此为一个EXE的模板

3.2测试几类简单的指令

3.2.1数据传送指令

①测试一

name "test mov"

org 100h

MOV AX, 1234H

MOV BH, 12H

MOV BL, 34H

MOV CX, 12

MOV DX, CX

MOV SP, AX

②测试二

name "test mov2"

org 100h

MOV AX, 2000H

MOV DS, AX

MOV [1000H], 'A'

MOV [1001H], 'B'

MOV SI, 1000H

MOV AX, [SI]

HLT

3.2.2算数运算指令

计算a*b+c-18

其中a=34H, b=56H, c=0E7H

data segment

DAT1 DB 34H

DAT2 DB 56H

DAT3 DB 0E7H

DATY DW ?

ends

stack segment

dw 128 dup(0)

ends

code segment

start:

ASSUME DS:DATA, SS:STACK, CS:CODE MOV AX, STACK

MOV SS, AX

MOV AX, DATA

MOV DS, AX

MOV AL, DAT1

MOV BL, DAT2

IMUL BL

MOV BX, AX

MOV AL, DAT3

CBW

ADD AX, BX

SUB AX, 18

MOV DATY, AX

ends

end start

3.2.3逻辑运算指令

通过单步调试可以追踪到每一条指令执行所产生的效果,此处指放出最后结果的截图

name 'test logic operation'

org 100h

MOV AX, 45FCH

MOV BX, 0034H

AND AL, 0FH

OR BX, 000FH

XOR AH, 0FH

NOT BH

HLT

3.2.4标志处理和CPU控制类指令name 'test control and flags'

org 100h

CLC;0-->CF

CMC;^CF-->CF

STD;1-->DF

CLI;0-->IF

NOP

NOP;blank

HLT;pause

3.2.5循环和移位类指令

name "test circle replacement"

org 100h

MOV BL, 01110010B

STC;1-->CF

MOV CL, 3

RCR BL, CL

HLT

算数移位三次后结果应该为

BL=10101110B=AEH

3.3编写一个简单的程序实现字符串的储存、搬移和显示

①不分段,仅使用代码代码段,使用逐个字符存入name "FIRST PROGRAM"

org 100h

; set segment register:

MOV AX, 1000H

MOV DS, AX

MOV BX, 0000H

; print "This is my first ASM program-YongRongFeng"

相关文档
最新文档