汇编语言第三章第三讲-计算机本-1~4

合集下载

第三章汇编语言程序设计.

第三章汇编语言程序设计.

汇编语言及语句格式
汇编
汇编语言源程序 目标程序
1、指令语句:汇编后生成二进制机器代码 [标号:] 助记符 操作数 ;注释 2、伪指令语句(指示性语句):汇编后不生成 二进制机器代码,控制汇编器执行汇编过程中的 行为。 [变量名] 定义符 参数 ;注释 例:NEXT:ADD AX,BX BUF DB 01H,12H,23H
例:定义用户堆栈 stack_seg segment dw 40H dup (?) stack_seg ends code_seg segment …… ;代码段中对堆栈初始化 ;下面2条指令顺序不能改变 mov ax, stack_seg mov ss, ax …… code_seg ends
例:data_seg1 segment ; 定义数据段
3、操作码和伪操作 操作码即指令助记符,是该语句的指令名称的代 表号码,他指出操作的类型,汇编程序将其翻译 成机器指令。不可省略。 例如:MOV,ADD等。 伪操作命令,其作用是定义变量的类型、定义段 、确定程序结束等。 4、操作数 操作数表示参加本指令的运算数据,根据指令的 操作类型,操作数不同,中间必须用“,”隔开 。 可以作为操作数的有:常数、寄存器、标号、 变量和表达式。
用汇编语言编写的源程序在输入计算机后, 需要将其翻译成目标程序,计算机才能执行相应 指令,这个翻译过程称为汇编,完成汇编任务的 程序称为汇编程序。 有基本汇编ASM(Assembler)和宏汇编 MASM(MacroAssembler)两种。 汇编程序以汇编语言源程序文件作为输入, 并由它产生两种输出文件:目标程序文件和源程 序列表文件。 目标程序文件经连接定位后由计算机执行; 源程序列表文件将列出源程序、目标程序的机 器语言代码及符号表。

教学课件第三章汇编语言程序设计

教学课件第三章汇编语言程序设计
ax=7654h
习题 3.10
⑴ 61h 62h 63h 0ah 10h 65h 66h ffh 00h 04h 04h 04h ffh 00h 04h 04h 04h ffh 00h 04h 04h 04h ⑵ 10h fch 00h 00h 00h
习题 3.11
my1b db “Personal Computer” my2b db 20 my3b db 14h my4b db 00010100b my5w dw 20 dup(?) my6c equ 100 my7c equ < Personal Computer >
3.2.3 名字和标号的属性
逻辑地址属性:名字和标号对应的存储单元的逻辑地址。
OFFSET 名字/标号 ;返回名字/标号的偏移地址
SEG 名字/标号 ;返回名字/标号的段地址
类型属性:变量名的类型可以是BYTE/WORD/DWORD,标号 和子程序名等的类型可以是NEAR/FAR。
类型名 PTR 名字/标号;将名字/标号按指定类型使用
• mov al, hex and al, 0fh
mov ah, 2 int 21h
mov ax, 4c00h int 21h
code segment ‘code’ assume cs:code,ds:data,ss:stack start: mov ax, data
mov ds, ax mov bx, offset ASCII
3.2 常量、变量和标号
常量表示一个固定的数值 变量实质上是指内存单元的数据 名字(变量名或子程序名等)和标号具有逻 辑地址和类型的属性
3.2.1 常量
常数:由各种进制表示的数值。默认为十进制。可用伪指令.RADIX 改变。 .RADIX n;n为2~16间的数值

计算机接口技术课件第三章MCS-51单片机汇编语言与程序设计基础.

计算机接口技术课件第三章MCS-51单片机汇编语言与程序设计基础.
起始单元,用-1作为结束标志。
DPTR,#LIST B,#127H A,@DPTR DPTR A,#-1,NEXT1; DONE START: MOV MOV NEXT: MOVX INC CJNE SJMP
;数表首地址
;预置最大值 ;取数 ;修改指针
是否为数表结尾?
;循环结束 ;比较
NEXT1: CJNE A,B,NEXT2
3-6
子程序
子程序 S … … … RET
子程序:能完成某项特定功能的独立程序段,可被反复调用。 3-6-1 子程序设计 主程序 … 一.子程序入口用标号作为子程序名。 CALL S 二.调用子程序之前设置好堆栈。 … 三.用返回指令 RET 结束子程序,并保 证堆栈栈顶为调用程序的返回地址。 CALL S … 四.子程序嵌套须考虑堆栈容量。 五.提供足够的调用信息: 如:子程序名、子程序功能、入口 参数和出口参数、子程序占用的硬 件资源、子程序中调用的其他子程 序名。
ED:
SJMP $
3-5
3-5-1 循环程序的构成 各个环节任务: 一.初始化部分
循环程序
循环初始化
包含多次重复执行的程序段,循环结构使程序紧凑。
循环工作
循环准备工作。如:清结果单元、 设指针、设循环控制变量初值等。 二.循环体
循环控制 ?
N
Y
循环工作部分:
需多次重复处理的工作。
循环结束
循环控制部分:
A,#N-1 R4,A A,R4 R3,A R0,#TAB A,@R0 B,A R0 A,@R0 A,B,L1 UNEX R0 A ,@R0 R0 @R0,A R3,LOOP2 R4,LOOP1
;N个数据排序 ;外循环次数 ;内循环次数 ;设数据指针 ;取二数

汇编语言(微机)第三章

汇编语言(微机)第三章
13
汇编语言源程序的格式
2、标识符 标识符可用作符号常量、名字、变量和标号等。 组成标识符有如下规定:
组成标识符的字符有: 大写字母:A~Z;文小写字母: a~z; 数字0~9;字符?、@、_ 、$;
字符长度不超过3l个;首字符不能是数字; ? 不能单独作为一个标识符; 不能把保留字用作标识符,保留字包括助记符、寄存
第三章:8086汇编语言程序设计
主讲教师:范新民
整理ppt
1
8086汇编语言程序设计
1 3.2.1 汇编语言源程序的格式 2 3.2.2 常量、标识符和表达式 3 3.2.3 指示性语句 4 3.2.4 指令性语句 5 3.2.5 宏指令
2
8086汇编语言程序设计
3.2.1 汇编语言源程序的格式
7
汇编语言源程序的格式
例3-1:对10个字节数据a1~a10求和。
DATA SEGMENT AT 2000H
ARRAY DB a1 ,a2 ,a3 ,… ,a10
COUNT EQU $ - ARRAY
SUM DW ?
DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’
即将一个程序段定义为一宏指令。
6
第三章:汇编言程序设计
(3)伪指令语句: 伪指令语句是一种指示性语句,这类语句向汇编程序
提供汇编过程要求的一些辅助信息,如给变量分配内存单 元地址、定义各种符号、实现分段等。
伪指令与指令性语句的区别: 伪指令语句经汇编后不产生任何机器代码,而指令 性语句经汇编后会产生相应的机器代码; 伪指令语句所指示的操作是在程序汇编时就完成了 的,而指令性语句的操作必须在程序运行时才能完 成。
LOP: ADD AL,[BX] ADC AH,0 INC BX LOOP LOP MOV [DI] ,AX MOV AH ,4CH INT 21H

第三章汇编语言程序设计wyPPT课件

第三章汇编语言程序设计wyPPT课件

格式: 【标号:】 DS 表达式
如:SUM: DS 20 ;从标号SUM代表的地址开始,
保留连续的20个字节单元。
2020/9/21
12
§3.5 基本程序设计方法
2020/9/21
2
2、 汇编语言 为了容易理解和记忆计算机指令,人们用一些英文单词及
数字作为助记符来描述每一条指令的功能。用助记符描述的指 令系统,被称为机器的汇编语言系统,简称汇编语言。
用汇编语言的每条指令意义清晰,编写、阅读和修改都很 。汇编指令和机器语言指令是一一对应的,即一条可执行的汇 编指令对应着一条机器语言指令,因此汇编语言可直接利用和 发挥机器硬件系统的许多特性,如:寄存器,标志位及一些特 殊指令等,能提高编程的质量和运行速度,且占用内存少。 一般如:系统软件、实时控制系统、智能化仪器、仪表软件等 对时间和存储容量要求较高的程序常用汇编语言书写。
下面介绍几种常用的基本伪指令:
2020/9/21
6
பைடு நூலகம்
1) ORG伪指令 (Origin) 通常用于源程序的开始处,用来规定目标程序的
起始地址 格式:ORG addr16 ;addr16是16位绝对地址, 可用标号或表达式表示。
如:ORG 1000H ;将程序的起始地址定为1000H
2) END伪指令
9) 寄存器,定义好的符号不得重新定义。
10) 格式: 符号地址 DATA 数据地址
11) 如: RES DATA 30H;定义符号RES为内存地 址30H
12) 2020/9/21 P0
PORT0 DATA 80H;定义符号PORT0为SFR中10
7) DB伪指令(Define Byte) 从指定单元开始定义(存储)若干个字节的数据

第三章汇编语言程序第三章-汇编语言程序设计设计

第三章汇编语言程序第三章-汇编语言程序设计设计

;STR1定义为字类型
MOV AX,STR1 ;合法
MOV AL,STR1 ;非法
MOV指令
由汇编程序执行的指令,它本身不被汇编 成机器指令。常用的伪指令有:
数据定义伪指令 符号定义伪指令 段定义和段寄存器指定伪指令 过程定义伪指令 结束伪指令
3.2.1 数据定义伪指令
00H 008BH
8FH 008CH
00H 008DH
3.2.2 符号定义伪指令
把一个表达式用一个符号表示,以后凡出 现该表达式的地方都可用这个符号表示。类 似于C语言中的#define。 符号定义伪指令有两种:EQU,=
✓ 用EQU定义的符号未清除前,不能重新定 义。清除EQU定义可用PURGE伪指令。
start: MOV AX, data
MOV DS, AX MOV ES, AX
<此处加入你自己的程序段>
MOV AL, 4CH INT 21H
code ENDS END start
堆栈段 数据段
代码段
3.1.2 汇编语言的语句与格式
汇编语言的语句有两种:
指令性语句——由8086指令助记符构成的语句 指示性语句——由伪指令构成的语句
助记符——用便于记忆的英语单词表示的指 令操作码。它反映了指令的功能和主要特征,便 于人们理解和记忆。
指令除了操作码以外,还有一个操作数问题。
操作数可能放在存储器中,这就涉及操作数的 地址。程序中遇到转移指令或调用指令,也需要 知道转移地址,若采用具体地址就很不方便,一 旦有错,改动也很麻烦。于是人们采用标号或 符号来代替地址,例:
4.表达式
➢表达式是常数、寄存器、标号、变量与 运算符的组合。
➢有数字表达式和地址表达式两种。

汇编语言课程第三章PPT课件

LINK16 lt302.obj
如果没有严重错误,LINK16将生成一个可
执! 行连文接件实(模l式t3应02用.e程xe序)必;须否使则用将段提式示可相执应
的错行误程信序息链。接这器时LI需NK要16根据错误信息重新 修改源程序后再汇编、链接,直到生成可 执行文件
郑州大学 计算机系 穆玲玲
32位汇编语言程序设计 郑州大学 计算机系 穆玲玲
郑州大学 计算机系 穆玲玲
32位汇编语言程序设计
32位应用程序的汇编连接
郑州大学 计算机系 穆玲玲
32位汇编语言程序设计
例3-2: 第一个实模式应用程序显示字符串
郑州大学 计算机系 穆玲玲
32位汇编语言程序设计
DOS模拟窗口
在MASM32环境中选择File/prompt命 令,启动模拟DOS窗口 在Windows下进入MS-DOS模拟环境通常 使用下面的方法(以Windows XP为 例):
郑州大学 计算机系 穆玲玲
32位汇编语言程序设计
链接软件
MASM614中的链接软件是段式可执行程 序链接器(Segmented Executable Linker),用于生成16位DOS程序,不 能链接生成32位Windows应用程序; MASM32中的连接器LINK.EXE是32位增量 式链接器(incremental linker)用于 链接生成32位应用程序
安装masm32 masm32只能安装在根目录
再双击“Exmasm32”
安装其他软件 安装目录为masm32所在目录,默认为
C:\masm32
郑州大学 计算机系 穆玲玲
32位汇编语言程序设计
MASM615
MASM615是微软提供的汇编开发软件包, 以DOS操作系统为平台,可以用来开发实 模式下的程序和系统程序,但是无法开 发保护模式下的32位应用程序 WINDOWS XP/2000环境下可在模拟 DOS窗口下使用 在教材配套的开发环境中使用了 MASM615中的链接器

第三章汇编语言程序设计


其中PARA为隐含值,即如果省略“定位类型”则 汇编程序按PARA处理。 [定位类型] [组合类型] [„类别’] (2)组合类型 组合类型指定段与段之间是怎样连接和定位的。 它指示连接程序,如何将某段与其它段组合起来的。 关系连接程序不但可以将不同模块的同名段进行组 合,并可根据组合类型,将各段顺序地或重叠地连 接在一起。其中有6种组合类型可供选择: 不组合(PRIVATE类型) 表示该段为私有段,在连接时不与其他模块中的 同名分段合并。组合类型的默认值为PRIVATE。
HIGH和LOW运算符:得到一个数值或地址表达 式的高位和低位字节。 例:STABFF EQU 0ABCDH MOV AH,HIGH STABFF MOV AH,LOW STABFF 5、注释 注释指明一条指令的功能,可以省略。
3.3 常用伪操作
3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 段定义伪操作 数据定义伪操作 符号定义伪操作 过程定义伪操作 模块定义与连接伪操作 宏处理伪操作
汇编语言及语句格式
汇编
汇编语言源程序 目标程序
1、指令语句:汇编后生成二进制机器代码 [标号:] 助记符 操作数 ;注释 2、伪指令语句(指示性语句):汇编后不生成 二进制机器代码,控制汇编器执行汇编过程中的 行为。 [变量名] 定义符 参数 ;注释 例:NEXT:ADD AX,BX BUF DB 01H,12H,23H
[定位类型] [组合类型] [„类别’] (3)类别名 类别名必须用单引号括起来。类别名是由用户任选字符 串组成,以表示该段的类别。在连接时,连接程序将各个程 序模块中具有同样类别名的逻辑段集中在一起,形成一个统 一的物理段。典型的类别名有“STACK”、 “CODE” 、 “DATA1” 、“DATA2”······ 一个典型程序的段结构如下: STACK SEGMENT PARA STACK „STACK‟ ;16位堆栈段定位类型为节起点组合为堆栈段类别名为 SATCK …… STACK ENDS

第3章汇编语言程序设计


ORG 0000H MOV 20H,#02 MOV R0,#20H MOV A,#01 ADD A,@R0 END
3字节,2周期 2字节,1周期 2字节,1周期 1字节,1周期 总计:8字节,5周期
3.5.2 顺序程序设计
该程序若用ADD A,#data指令编程时,可写出 如下程序:
ORG 0000H MOV A,#01 ADD A,#02 END
3.5.2 顺序程序设计
例:编写1+2的程序。 首先用ADD A,Rn指令,该指令是将寄存器
Rn中的数与累加器A中的数相加,结果存于A中, 这就要求先将1和2分别送到A和寄存器Rn中,而 Rn有四组,每组有8个单元R0~R7,首先要知 道Rn在哪组,默认值是第0组,在同一个程序中, 同组中的Rn不能重复使用,不然数据会出错,唯 独A可以反复使用,不出问题。
JNC AGTVAL2
;则CY=1,否则CY=0 ;若CY=1,则转去ALTVAL1处执行,否则 ;向下执行
;重新将数据单元NUM的值送累加器A ;执行A-181,若(A)<181,则CY=1, ;否则,CY=0 ;若CY=0,则转到AGTVAL2处执行, ;否则,向下执行
3.5.4 循环程序设计
2. 伪指令
在汇编源程序的过程中,还有一些指令不要求计 算机进行任何操作,也没有对应的机器码,不产 生目标程序,仅仅是能够帮助汇编进行的一些指 令,这种指令称为伪指令。
作用:伪指令主要用来指定程序或数据的起始位 置,给出一些连续存放数据的确定地址,或为中 间运算结果保留一部分存储空间以及表示源程序 结束等。
图3.15 例3.28相关部分电路图
3.5.3 分支程序设计
解:流程图如图3.16所示。 参考程序如下:

第三章 汇编语言程序设计


3. 2 完整段定义格式
stack segment
;定义堆栈段,段名stack
db 1024 dup(0) ;分配堆栈段的大小为1024字节,内容为0
stack ends
;堆栈段结束
data segment
;定义数据段,段名data
…..
;数据定义
data ends
;数据段结束
code segment
{ 0.2*w
P=
(w≤20kg)
0.2*20+0.3*(w-20) (w>20kg)
例3.3 设内存中有三个互不相等的无符号字数 据,分别存放在ARG开始的字单元,编制 程序将其中最大值存入MAX单元。 AB C


1:;*****EXAM3.3*****
2:SSEG
SEGMENT STACK
第三章 汇编语言程序设计
• 汇编语言源程序格式 • 顺序、分支、循环程序设计 • 子程序设计
§3.1 汇编语言的源程序格式
⑴汇编语言源程序由语句序列构成。 ⑵源程序可以包含若干个代码段、数据段、
附加段或堆栈段。 ⑶段与段之间的顺序任意。 ⑷独立运行的程序必须包含一个代码段,并
指示程序执行的起始点,一个程序只有一 个起始点。
2: SSEG
SEGMENT
3: STK DB
20H DUP (0)
4: SSEG ENDS
5: DSEG
SEGMENT
6: HATAB DB 30H,31H,32H,33H,34H
7:
DB 35H,36H,37H,38H,39H
8:
DB 41H,42H,43H,44H,45H,46H
9: HEX DB 0CH
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档