一、设计一个完整的汇编语言源程序,实现
This presentation is the property of its rightful owner.
Sponsored Links
1 / 14

一、设计一个完整的汇编语言源程序,实现 Z=X+Y 。 PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on
  • Presentation posted in: General

一、设计一个完整的汇编语言源程序,实现 Z=X+Y 。. 1. 实现加法运算的程序段如下:. ;取被加数. MOV AL , X. MOV BL , Y. ;取加数. ;完成 X+Y 运算. ADD AL , BL. ;把结果保存在目的单元中. MOV Z , AL. 2. 数据段定义. 段定义语句 SEGMENT/ENDS. 功能:指出段名,表示段的开始和结束. 格式:段名 SEGMENT ┆ 段名 ENDS. DATA SEGMENT.

Download Presentation

一、设计一个完整的汇编语言源程序,实现 Z=X+Y 。

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


一、设计一个完整的汇编语言源程序,实现Z=X+Y。

1. 实现加法运算的程序段如下:

;取被加数

MOV AL,X

MOV BL,Y

;取加数

;完成X+Y运算

ADD AL,BL

;把结果保存在目的单元中

MOV Z,AL


2. 数据段定义

段定义语句 SEGMENT/ENDS

功能:指出段名,表示段的开始和结束

格式:段名SEGMENT

段名 ENDS

DATA SEGMENT

;数据段起始

X DB 32H

;数据段内容

Y DB 25H

Z DB 1 DUP(?)

DATA ENDS

;数据段结束


3. 堆栈段定义

STACKA SEGMENT STACK

DB 100 DUP(?)

STACKA ENDS

4. 代码段定义

CODE SEGMENT

ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA

CODE ENDS

段寄存器说明语句 ASSUME

格式: ASSUME 段寄存器: 段名, 段寄存器: 段名, ……

功能: 说明当前段所在位置。


二、完整的汇编语言源程序,实现Z=X+Y。

结束

定义代码段

定义数据段

定义堆栈段

说明各段所在位置

对DS和ES进行初始化

返回DOS状态

数据定义

核心程序段

指定程序存放的起始地址偏移量

DATA SEGMENT

ORG 2100H

X DB 32H

Y DB 25H

Z DB 1 DUP(?)

DATA ENDS

STACKA SEGMENT

DB 100 DUP(?)

STACKA ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA

START: MOV AX, DATA

MOV DS, AX

MOV ES, AX

MOV AL, X

MOV BL, Y

ADD AL, BL

MOV Z, AL

MOV AH, 4CH

INT 21H

CODE ENDS

END START


返回DOS状态

结束

定义数据段

说明各段所在位置

对DS和ES进行初始化

核心程序段

DATA SEGMENT

··· ···

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA

START: MOV AX, DATA

MOV DS, AX

MOV ES, AX

··· ···

MOV AH, 4CH

INT 21H

CODE ENDS

END START

三、程序正常结束的方式

1。主程序方式


返回DOS状态

核心程序段

压返回DOS地址

对DS和ES进行初始化

说明各段所在位置

定义数据段

结束

DATA SEGMENT

··· ···

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:STACKA, DS:DATA, ES:DATA

MAIN PROC FAR

START:PUSH DS

SUB AX,AX

PUSH AX

MOV AX, DATA

MOV DS, AX

MOV ES, AX

··· ···

RET

MAIN ENDP

CODE ENDS

END START

2。定义为过程形式


四、其他伪指令说明

1. 起始地址说明伪指令 ORG

格式:ORG 偏移地址

功能:说明该伪指令后的程序或数据所在位置的起始偏移地址

2. 数据定义伪指令 DB、DW、DD、DF、DQ、DT、DUP

作用: 为数据项分配一个或多个字节的存储空间,且可给它

们赋初值。

⑴ 字节变量定义伪指令 DB

格式:[变量名] DB 表达式表

功能:定义字节变量区,变量区的数据由表达式

(逗号分隔的数据项)给出,每个数据项占一个字节。


例如:

X DB 1,3,5 +3-1,9

X

0 1

内存分配 图如右所示:

⑵ 字变量定义伪指令 DW

0 3

格式与DB指令相同,定义字变量区,每个数据项占两个字节,低字节在低地址处,高字节在高地址处。

0 7

0 9

例如:

Y DW 1005h, 0028h

单元地址

内存分配图如右所示:

⑶ 双字变量定义伪指令 DD

05h

Y

2010h

格式与DB指令相同,定义双字变量区

10h

2011h

⑷ 三字变量定义伪指令 DF

28h

2012h

格式与DB指令相同,定义三字变量区

00h

2013h

⑸ 四字变量定义伪指令 DQ

格式与DB指令相同,定义四字变量区

⑹ 五字变量定义伪指令 DT

格式与DB指令相同,定义五字变量区


例如:

Z DQ 1020304050607080h

例:有如下数据定义指令,

分析其存储情况。

内存分配 图如下页所示:

C1 DB ‘A’, ‘B’, ‘C’

C2 DW ‘A’, ‘B’ , ‘C’

内存分配图如下所示:

Z

8 0 h

2100h

2101h

7 0 h

4 1 h

2020h

C1

2021h

6 0 h

4 2 h

5 0 h

4 3 h

4 0 h

C2

4 1 h

3 0 h

0 0 h

2106h

2 0 h

4 2 h

2107h

1 0 h

0 0 h

2027h

4 3 h

0 0 h

2028h


五、汇编语言程序的上机步骤

开始

用EDIT编辑修改源程序,存盘形成*.asm文件

用TASM32 汇编源程序文件,形成*.obj文件

Y

有错误吗?

N

用TLINK 程序连接目标码文件, 形成可执行文件*.exe文件

Y

有错误吗?

N

用TD 程序运行可执行文件*.exe

N

结束

有错误吗?

Y

用TD程序进行调试,找出错误原因


第一次实验内容

  • 1.2:汇编语言编程与调试方法

  • (1)汇编语言程序结构

  • (2)汇编语言程序开发过程

  • (3)MS—DOS EDIT文本编辑

  • (4)TD使用方法

  • 1.3.1:简单程序设计实验

  • P25:例1.1

  • P26:实验内容1

  • P27:实验内容2

  • P27:实验内容3


p27实验(2)

data segment

x dd 02a8b7654h

y dw 5abch

z dw ?

f dw ?

data ends

stacka segment para stack 'stack'

db 100 dup(?)

stacka ends

code segment

assume ds:data,cs:code,ss:stacka,es:data

start: mov ax,data

mov ds,ax

mov es,ax


mov ax,word ptr x

mov dx,word ptr x+2

div y

mov z,ax

mov f,dx

mov ah,4ch

int 21h

code ends

end start


  • Login