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

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


  • 81 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

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

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

;取被加数

MOV AL,X

MOV BL,Y

;取加数

;完成X+Y运算

ADD AL,BL

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

MOV Z,AL


Z x y

2. 数据段定义

段定义语句 SEGMENT/ENDS

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

格式:段名SEGMENT

段名 ENDS

DATA SEGMENT

;数据段起始

X DB 32H

;数据段内容

Y DB 25H

Z DB 1 DUP(?)

DATA ENDS

;数据段结束


Z x y

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

二、完整的汇编语言源程序,实现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


Z x y

返回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。主程序方式


Z x y

返回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。定义为过程形式


Z x y

四、其他伪指令说明

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

格式:ORG 偏移地址

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

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

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

们赋初值。

⑴ 字节变量定义伪指令 DB

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

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

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


Z x y

例如:

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 x y

例如:

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


Z x y

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

开始

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

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

Y

有错误吗?

N

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

Y

有错误吗?

N

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

N

结束

有错误吗?

Y

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


Z x y

第一次实验内容

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

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

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

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

  • (4)TD使用方法

  • 1.3.1:简单程序设计实验

  • P25:例1.1

  • P26:实验内容1

  • P27:实验内容2

  • P27:实验内容3


P27 2

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


Z x y

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