实验三 宏汇编语言的基本语法及运算类程序编制

更新时间:2023-05-17 01:54:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

青科

实验三 宏汇编语言的基本语法及运算类程序编制

一、实验目的:

1、掌握常用伪指令的功能和使用方法。

2、掌握运算类程序设计的基本方法。

二、实验内容:

1、编制包含多种数据定义伪指令的完整程序,经汇编、连接后,装入DEBUG, 观察数据的存储情况,从而掌握常用伪指令的功能和使用方法。

举例:

STA SEGMENT STACK ;定义堆栈段为200个字节

S1 DW 100 DUP(?)

STA ENDS

DATA SEGMENT ;定义数据段

i DB 12H,’AB’

w DW 12H,’AB’

NUM=$-I

a DD 12H ;以上数据在内存中如何存放?

DATA ENDS

CODE SEGMENT ;定义代码段

ASSUME CS:CODE,SS:STA,DS:DATA

ORG 100H ;从CS:100H处开始输入程序

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX ;这三条指令为返回DOS做准备

MOV AX,DATA ;给DS赋初值

MOV DS,AX

MOV AL,I ;翻译成机器指令是什么格式?

MOV AX,w ;?

MOV BL,NUM ;?

RET

START ENDP

CODE ENDS

END START

在debug中执行完MOV DS,AX指令后(为什么?),使用命令 -d 0 观察数据段的存储单元的数据存储情况。

青科

2、编制一段完整程序,找出一个数据块中的最大数。其中,数据块的长度>1,并且放在内存count单元中,而数据块本身是从datblk单元开始存放的,最后,把找出的最大值放到max单元中。假设这个数据块中的数都是无符号的8位数。(在DEBUG内观察结果)。

STA SEGMENT STACK

S1 DW 100 DUP(?)

STA ENDS

DATA SEGMENT

max DB ?

count DB 08H

datblk DB 12H,34H,56H,78H,9AH,0BCH,0DEH,01H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STA,DS:DATA

ORG 100H

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

LEA SI,count

MOV CL,[SI]

LEA SI,datblk

MOV AL,00

MOV CH,00

LP: CLC

CMP AL,[SI]

JC BB

JMP AA

BB: MOV AL,[SI]

AA: INC SI

LOOP LP

LEA SI,max

MOV [SI],AL

RET

START ENDP

CODE ENDS

END START

青科

三、实验步骤:

1、设计源程序。

2、使用QTHPCI集成操作软件编辑输入源程序,并保存(文件后缀名为.ASM)。

3、使用QTHPCI集成操作软件对源程序进行汇编(编译),得到目标程序。

4、使用QTHPCI集成操作软件对目标程序进行连接,得到可执行程序。

5、使用QTHPCI集成操作软件对可执行程序进行调试,观察程序执行结果。

四、实验结果:

1、实验内容1的结果:

DS:0000处开始的存储单元的结果是:12,41,42,12,00,42,41,12。 MOV AL,I翻译成机器指令是MOV AL,[0000],执行后AL=12H MOV AX,w翻译成机器指令是MOV AX,[0003],执行后AX=0012H MOV BL,NUM翻译成机器指令是MOV BL,07,执行后BL=07

2、实验内容2的结果:

程序执行完毕后,内存DS:0000处开始的存储单元的结果是: DE,08,12,34,56,78,9A,BC,DE,01。

本文来源:https://www.bwwdw.com/article/msz4.html

Top