汇编程序及接口技术实验报告2

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

微机汇编程序及接口技术实验报告

专业:电气自动化

学院:机电工程学院

指导老师:

班级:

姓名:

学号:

实验时间:

实验地点:xx大学xxx校区自控楼xx教室

汇编程序实验:

一、实验目的

1、熟悉汇编程序调试过程

2、掌握算术运算指令运用

3、掌握分支程序的编程和调试方法

二、实验设备

80X86微型计算机

三、实验内容

1、编程并调试显示“Hello Word!”字符串的汇编程序

TITLE HELLO

DA TA SEGMENT

STR DB'Hello World!$'

DA TA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET STR

MOV AH,9H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

2、A、B、C、D、W是互不相等的在数据段中定义的16位有符号数,并假设加减运算不产生溢出。编写一个完整段定义的汇编语言程序,计算W=(A+B)×(C—D)。

title asmprogram1_1

DA TA SEGMENT

A DW 1H

B DW 3H

C DW 4H

D DW 2H

W DW 2 DUP(?)

DA TA ENDS

;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:MOV AX,DATA

MOV DS,AX

MOV AX,A

ADD AX,B

MOV BX,C

SUB BX,D

IMUL BX

MOV W,AX

MOV W+2,DX

MOV AH,4CH

INT 21H

CODE ENDS

END START

调试验证结果:

W=(A+B)×(C—D)=(1H+3H)×(4H-2H)= 8H,结果存于114F:0008开始的的4个单元里。

3、设X、Y为在数据段中定义的有符号字变量。编写一个完整段定义的汇编语言程序(包含必要的伪指令,给出必要的注释)完成以下操作:若0

STACKS SEGMENT STACK;DEFINE STACK

DW 128 DUP(?)

STACKS ENDS

DA TAS SEGMENT

X DW 11H

Y DW 22H

DA TAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:MOV AX,DATAS

MOV DS,AX

SUB X,0

JNG L1

SUB Y,1000

JAE L1

JMP L2

L1:MOV AX,2000

MOV BX,0

L2:MOV AX,0

MOV BX,2000

MOV AH,4CH

INT 21H

CODES ENDS

END START

调试验证:

初始赋值X 为11H,Y 为22H,根据题目要求结果因为AX=0,BX=2000,调试结果

AX=0000,BX=07D0,符合要求。

4、编写汇编语言程序,将数据段中地址为BLOCK1的100个字变量数组拷贝到BLOCK2开始的区域,传送中要剔除其中为0的数据。

DATAS SEGMENT

BLOCK1 DW 100 DUP(1000H)

BLOCK2 DW 100 DUP(?)

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START: MOV AX,DATAS

MOV DS,AX

LEA SI,BLOCK1

LEA DI,BLOCK2

L1: MOV AX,,[SI]

JZ L2

MOV [DI],AX

ADD DI,2

ADD SI,2

DEC CX

JNZ L1

L2: ADD SI,2

DEC CX

JNZ L1

MOV AH,4CH

INT 21H

CODES ENDS

END START

调试验证:

如上图程序可以正常运行,BLOCK1中的数据存在097E:0000开始的单元内,拷贝至BLOCK2,BLOCK2中的数据在095E:00C8开始的单元内,如下图:

符合题目的功能要求。

5、编写汇编语言程序,计算首地址为BLOCK的200个有符号字变量数组的平均值,并将它存放在CX中。STACKS SEGMENT STACK

DW 128 DUP(?)

STACKS ENDS

DA TAS SEGMENT

BLOCK DW 40 DUP(0001H,0002H,0003H,0004H,0005H)

DA TAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START: MOV AX,DATAS

MOV DS,AX

LEA SI,BLOCK

MOV AX,0

MOV CX,200

相关文档
最新文档