汇编程序及接口技术实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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