邮电社十一五规划教材《微机原理》PPT-杨立第4章 汇编语言程序设计

合集下载

微机原理与接口技术PPT_第4章 汇编语言程序设计

微机原理与接口技术PPT_第4章 汇编语言程序设计

分段结构 程序按段编写, 内存分段编址相对应。 程序按段编写 与8086内存分段编址相对应。 内存分段编址相对应 每段由伪操作SEGMENT开始、由ENDS结束。 开始、 结束。 每段由伪操作 开始 结束 程序可由多个段构成,至少有一个代码段。 程序可由多个段构成,至少有一个代码段。 程序最后为END结束语句,后跟一启动地址。 程序最后为 结束语句,后跟一启动地址。 结束语句 启动地址指示程序开始执行的第一条语句。 启动地址指示程序开始执行的第一条语句。 程序中设有返回DOS的功能。 的功能。 程序中设有返回 的功能 使程序执行完后返回DOS系统的命令接受状态。 系统的命令接受状态。 使程序执行完后返回 系统的命令接受状态 程序中用到内存操作数时, 程序中用到内存操作数时, 应按操作数的寻址方式,给相应的段寄存器赋值 应按操作数的寻址方式 给相应的段寄存器赋值
根据语句功能的不同, 名字项可用来表示段名、 根据语句功能的不同, 名字项可用来表示段名、变量名 标号、过程名等。 、 标号、过程名等。 • 名字项用一个符号表示。 名字项用一个符号表示。 对符号的规定: 对符号的规定 ① 由字符 由字符A~Z ,a~z ,0~9及符号 、$、下划线 等组成 及符号@、 、下划线_ 及符号 最长31个字符 超出部分忽略。 个字符, ,最长 个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 ② 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 如指令的助记符等 如指令的助记符等) ③ 不使用汇编程序中的保留字。 (如指令的助记符等 对定义的符号不区分大小写。但为便于记忆, ④ 对定义的符号不区分大小写。但为便于记忆,名字的定 义应该做到见名知意。 义应该做到见名知意。
例 4-1 给出一个完整的汇编语言源程序 完成两个字节数据相加。 完成两个字节数据相加。

微机原理4章

微机原理4章
名字 伪指令助记符 操作数,操作数 „ ;注释
9
常量名(符号名)、变量名、段名或过程名,其后不加冒号
标号和名字的 命明规则:
以字母开头 由字母A~Z(不分大小写)、数字(0~9)及部分特 殊字符(? @ $ 和 下划线_等)组成 字符串长度不超过31个 标识符不能是汇编语言中有特定意义的保留字、助记 符、Reg等。
12
2、变量、标号(存储器操作数)



变量:专指存放在存储单元中的数据,数据的值是可变 的。在程序中以变量名形式出现,是数据在内存中存放 地址的符号表示。 标号:某条指令的符号地址。是程序转移指令的操作数。 变量和标号都和存储器地址相关连。 变量和标号都具有三种属性: 段属性 、偏移量属性、类型属性
编 辑 源程序:文件名.asm 汇 编 目标程序:文件名.obj 错误
负责把汇编源程序翻译 成目标程序的一种系统 软件。又称汇编程序。 •不同汇编器的语法和功 能相差很多 • MASM(宏汇编)
MASM4.0 MASM5.0 MASM6.15
错误
链 接 错误 可执行程序:文件名.exe
调 试
2
• TASM •链接:LINK
见例4.19 见例4.21
1、操作数是常数或表达式
X DB 25H
Y DW 4142H Z DD 12345678H Z A DB ? B DW ? X Y 1 25H 4 42H 2 41H 7 78H 16 56H 34H 12H
B_TABLE
W_TABLE
DB 1, 4,-2,7,16
DW 1122H ,3*20H


功能: 变量定义、存储器分配、指示程序开始和 结束、段定义、段分配等。 简单了解4.2.6 、4.2.7、4.2.8内容

微机原理汇编语言程序设计ppt课件

微机原理汇编语言程序设计ppt课件
汇编后源操作数被翻译为:3F00H, 所以上述指令与以下指令等价: AND AX, 3F00H
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式—分析运算符
分析运算符包括:SEG、OFFSET SEG:取变量/标号的段地址 OFFSET:取变量/标号的偏移地址
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式
表达式由标号、常量、变量等加上必要的运算符构成 有数字表达式和地址表达式两种 汇编时按优先规则对表达式进行计算,计算出具体的数值
ASSUME DS:DATA, ES:EXTRA代码段 CODE ENDS
MAIN PROC FAR
; ----------------------------------------------
MOV AX, DATA
END MAIN
MOV DS, AX
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.1 常量
常量操作数:
数值常数:11001000B,0FA21H,329D(329) 字符常数:‘ABCD’ (41H 42H 43H 44H)
例:
MOV AX, 0FA21H VAR DB 329 STR DB ‘ABCD’
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人

微机原理第4章PPT课件

微机原理第4章PPT课件

当一个定义的存储区内的每个单元要放置同样的数据或在存 储器中预留多个存储单元时,可用DUP 定义重复变量操作符。 格式: n DUP(?) 其中:n 为重复的次数,“( )”中为要重复的数据。
2、变量
指存放在存储单元中的值,在程序运行中是可以修改的。 变量都有三个属性:
(1) 段值:所在段的段地址; (2) 偏移地址:变量地址与所在段首地址间的偏移字节数; (3) 类型:变量中每个元素所包含的字节数。
类型有字节(BYTE)、字(WORD)、双字(DWORD); 3、标号
标号是可执行指令语句的地址的符号表示,通常作为转移 指令或调用指令的目的操作数,在程序运行过程中不能改变。
(1) 段地址:所在段的段地址; (2) 偏移地址:所在段内的偏移地址; (3) 类型:标号的类型反映了相应存储单元地址在作为 转移或调用指令的目标操作数时的寻址方式,可有两种情况, 即NEAR和FAR。
四、MASM中的表达式 表达式由运算对象(常数、变量、标号和地址)和运算符组成。
1.算术运算符、逻辑运算符和关系运算符 算术运算:+、-、×、÷、MOD(模除)、SHL、SHR 逻辑运算:AND、OR、 NOT 、 XOR 关系运算:EQ/NE/LT/GT/LE/GE(相等/不等/小于/大于/小于 等于/大于等于),结果为真,则返回0FFFFH,假则为0。
个字节内容,则可用PTR对其作用,使它暂时改变为字节 单元,即
MOV AL,BYTE PTR BUF 例如2:
JMP DWORD PTR [1000H] ;转移地址放在1000H开始的4个单元中, 低2个 字节为偏移量,高2个字节为段地址。
4.3 伪指令语句
一、数据定义及定义存储单元伪指令 功能:该类伪指令用来定义存储空间及其所存数据的长度。 格式:[变量] 助记符 操作数[,操作数][;注释] 变量字段是可选项,它用符号表示,其作用与指令语句前的 标号相同,但它的后面不跟冒号。汇编程序汇编时使其记以 第一个字节的偏移地址。

微机原理第4章 汇编语言的程序设计4-4.5

微机原理第4章 汇编语言的程序设计4-4.5

5个 个 字节 10个 个 字
重复 4次 次
用地址表达式定义变量。 例4-23 用地址表达式定义变量。 如果当前已有变量PAR1,标号 如果当前已有变量 ,标号ADR2和ADR3, 和 , 可以用它们定义新的变量如下: 可以用它们定义新的变量如下: ONE DW PAR1 ONE 00 PAR1 TWO DW ADR2 01 偏移地址 THREE DD ADR3 TWO 00 ADR2
例4-36 MOV AH,0CH , MOV AL,7 , INT 21H
23Leabharlann DOS显示功能调用(功能见 显示功能调用 功能见P161表4-8) 表 )
表4-8 DOS显示功能调用 显示功能调用 AH 2 6 9 功能 显示一个字符,检验 显示一个字符,检验CtrlBreak键 键 显示一个字符, 显示一个字符,不检验 Ctrl-Break键 键 显示字符串 入口参数 DL=字符 字符 DL=字符 字符 DS:DX=串地址 串地址 说明 光标跟随字符 移动 光标跟随字符 移动 串以‘ 结束 串以‘$’结束 光标随串移动
26
返回 DOS操作系统 操作系统
MOV AH,4CH , INT 21H
27
.MODEL SMALL .386 .STACK 100H ;定义堆栈段 .DATA ;定义数据段 LIST1 DB 100 DUP(?) LIST2 DB 100 DUP(?) .CODE ;定义代码段 .STARTUP ;程序开始伪指令 CLD MOV SI,OFFSET LIST1 , MOV DI,OFFSET LIST2 , MOV CX,100 , REP MOVSB ……. ;程序代码 .EXIT 0 ;程序结束伪指令 END ;汇编结束伪指令

《微机原理第四章》PPT课件

《微机原理第四章》PPT课件

三、调试与运行
1、源文件编辑
任何文本编辑器均可用于编辑汇编语言的源程序。例 如dos下的edit,turbo C集成环境的编辑器, Windows下的记事本、写字板等。
汇编语言源程序以ASCII码形式存放于内存中,扩展 名应为 .ASM,给源文件命名后可存盘,源程序用大写、 小写皆可。
2、源文件汇编
MOV DS,AX
3、高级语言
• 不依赖具体的机器,面向对象的计算机语言称为高级 语言。如 BASIC, C, VB, VC等
• 高级语言易记忆,易懂、便于学习与掌握
• 汇编语言与高级语言的比较
汇编语言
高级语言
执行速度快,占内存小, 内存大,
执行速度慢,占
实施控制方便,通用性差 植性强
通用性好,可移
用Microsoft 的宏汇编程序〔MASM〕任何版 本汇编皆可。汇编有以下几种方式 方式1: 在命令提示符下,键入 MASM↵
屏幕上会出现如下提示,按照提示键入文件名 回车即可 。
Source filename [.ASM]: xxx ↵ Object filename [xxx.OBJ]: ↵ Source listing [nul.LST]:xxx ↵ Crose-reference [nul.CRF]:xxx ↵
.CRF是用来对符号进展前后对照的文件,可了解源 程序中符号〔或变量〕定义或引用情况。
3、连接
在命令提示符下,键入LINK ↵,或在Windows 下用鼠标直接点击LINK,即可连接。
连接时屏幕显示如下:
Object Modules [.OBJ]:ABC ↵ Run File [ABC.EXE]: ↵ List File [NUL.MAP]:ABC ↵ Libraries [.LIB]: ↵ 〔注:MASM中没有库文件, 可直接键入回车〕程序设计效率低,依赖机器 不来自赖机器程序设计效率高,

微机原理课件第4章 汇编语言程序设计

NEAR表示标号所在语句与转移指令(或调用 指令)在同一代码段内,跳转时只需改变IP。 FAR表示标号所在语句与转移指令(或调用 指令)不在同一代码段内。 若没有对类型进行说明,默认为NEAR。 备 注:标号常作为转移指令或CALL指令的转移地址
11
3、变量 变量用伪指令定义,变量名是内存单元的符号地址。 定义变量就是给变量分配内存单元。 变量也有三个属性:
只能出现在指令性语句中,标号后应加上冒号。
名 字:段、子程序、变量的名字,用来代表它们在存储
器中的地址;只能出现在指示性语句中,名字后 不加冒号。
助记符:指令助记符、伪指令 操作数:指令的操作对象
指令性语句 — 0,1,2个 指示性语句 — 根据需要确定 操作数之间以逗号隔开 操作数可以是寄存器、存储单元、常数或表达式
;汇编前的形式 ;汇编后的形式 ;设TAB偏移地址为1000H
15
2) 逻辑运算符:AND、OR、XOR、NOT
逻辑运算符只能用于数字表达式中。
例如:MOV CL,36H AND 0FH ; 汇编前
MOV CL,06H
; 汇编后
注意:不要把逻辑运算符与逻辑运算指令混淆
例:AND AX, 3FC0H AND 0FF00H 汇编后源操作数被翻译为3F00H,所以上述 指令与AND AX, 3F00H等价。
体的数值或地址,运行时不能改变。 ➢表达式中的运算符有6类:算术、逻辑、关系、
取地址、属性、杂类。
14
1) 算术运算符:+ - * / MOD
用于数字表达式 例:MOV AX,4*1024 ;汇编前的形式 MOV AX,4096 ;汇编后的形式
用于地址表达式 例: LEA SI,TAB+3 LEA SI,[1003H]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
第4章 章
汇编语言语句格式 汇编语言程序中一条完整的语句格式由以下4项内容组成: [名字] 操作符 [操作数] [;注释] (1)名字字段 表示本条语句的符号地址,可是标号或变量,标号采用冒 号“:”来标记。 标号和变量都具备段属性、偏移属性和类型属性。
4
第4章 章
(2)操作符字段 操作符字段是指令、伪指令或宏指令的助记符。 (3)操作数字段 操作数字段是操作符的操作对象。 (4)注释字段 注释字段是以“;”开头的语句注释,说明语句行或某段程 序的功能,是语句的非执行部分。
25
第4章 章
1. 单分支程序设计 单分支结构是比较简单的分支程序形式,设计时主要考虑选 择合适的判断条件以及条件转移语句。 4.14 X 【例4.14】给定下面的分段函数,设变量X为带符号整数,试 编写程序完成指定的计算。
| x |≥ 5 0 y= 1 − x | x |< 5
26
SEGMENT ;定义数据段 X DB -36 ;X为字节变量并赋初值 Y DB ? ;Y为字节变量,预留空间 DATA ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE;DS:DATA START:MOV AX,DATA ;初始化DS MOV DS,AX MOV AL,X ;取X值到AL CMP AL,0 ;AL与0比较 JGE NEXT ;结果为正转NEXT NEG AL ;对AL中的内容求补 NEXT: CMP AL,5 ;|X|和5比较 JGE P1 ;若结果≥5转P1 MOV AL,1 ;否则1送AL MOV BL,X ;X送BL SUB AL,BL ;减法计算,结果送AL JMP EXIT ;转EXIT P1: MOV AL,0 ;0送AL EXIT: MOV Y,AL ;结果送Y单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START ;汇编结束 DATA
7
第4章 章 4.1.4 汇编语言的工作环境和操作步骤 1. 汇编语言的工作环境 (1)DOS操作系统; (2)建立汇编语言源程序的编辑程序; (3)汇编处理的宏汇编程序MASM.EXE; (4)连接的连接程序LINK.EXE; (5)程序调试的动态调试程序。
8
第4章 章 4.2 伪指令及其应用 前面所分析是机器指令,在运行时由CPU执 行,每条指令对应CPU的一种特定的操作。 伪指令用来对相关语句进行定义和说明,不产 生目标代码,又称伪操作。 宏汇编程序MASM提供了约几十种伪指令,主 要有数据定义、符号定义、段定义、过程定义、 模块定义、结构等。
第4章 章
4.4.3 分支结构程序设计 在解决某些实际问题时,采用的方法会随着某些条件的 不同而不同,这种在不同条件下处理的程序称为分支程序, 采用分支结构设计的程序结构上清晰,易于阅读及调试。 程序中所产生的分支是由条件转移指令来完成的。汇编 语言提供了多种条件转移指令,可以根据使用不同的转移指 令所产生的结果状态选择要转移的程序段,对给定问题进行 处理。
5
第4章 章
4.1.2 汇编语言中的运算符 有5种运算符: (1)算术运算符 (2)逻辑运算符 (3)关系运算符 (4)分析运算符 (5)综合运算符
6
第4章 章
4.1.3 汇编语言的程序结构 (1)由语句序列构成。 (2)采用分段结构。 (3)用ASSUME伪指令将段地址与段寄存器的对应关系告诉 汇编程序。 (4)为保证在执行过程中数据段地址的正确性,在源程序中 有以下两条指令对DS寄存器进行初始化。 MOV AX,DATA MOV DS,AX (5)为返回DOS,采用DOS中断调用4CH,以下两条指令: MOV AH,4CH INT 21H
17
Байду номын сангаас
第4章 章
4.3 高级汇编及其应用
4.3.1 宏定义及其调用 “宏”是指源程序中一段具有独立功能的代码, 宏指令代表一段源程序。 宏调用指令在汇编过程中对宏定义体作宏展开操 作,用宏定义体取代源程序中的宏指令名,并用实参 取代宏定义中的形参,且要求实参与形参一一对应。
18
第4章 章
1. 宏定义 宏定义格式: 宏指令名 MACRO [形参,形参,…] ┆} ENDM MACRO是宏定义符,ENDM是宏结束符,二者之间的部分 为宏体。形参表用来向宏体传送参数,宏调用时代入实参。 。 宏体
汇编语言中的子程序是以过程的形式出现的,过程的调 用和返回采用CALL和RET指令来完成。过程定义伪指令的格式 如下: 格式:过程名 PROC [NEAR]/FAR …(过程中的语句系列) RET …(过程中的语句系列) 过程名 ENDP
14
第4章 章
5. 结构定义伪指令 结构是将逻辑上相互关联的一组数据以某种形式组合在一 起,形成一个整体以便进行数据处理。结构的使用需要经过 结构定义、结构预置和结构引用等过程。 结构采用伪指令STRUC和ENDS进行定义,把相关数据定义 语句组合起来,便构成一个完整的结构。其格式如下: 结构名 STRUC …(数据定义语句序列) 结构名 ENDS
19
第4章 章
(2)宏调用:经定义的宏指令,可以在源程序中调用,称 为宏调用。宏调用的格式为: 宏指令名 [实参1,实参2,…,实参n] (3)宏展开:宏展开就是将宏指令语句用宏定义中宏体的 程序段目标代码替换。在汇编源程序时,宏汇编程序将对每 条宏指令语句进行宏展开,取调用提供的实参替代相应的形 参,对原有宏体目标代码作相应改变。
(2)ASSUME伪指令 格式: ASSUME 段寄存器名:段名[,段寄存器名:段名[,…]] ASSUME段寻址伪指令放置在代码段的开始处,可以设定 多个段与段寄存器之间的对应关系,中间用逗号分开。当汇 编程序汇编一个逻辑段时,可利用相应的段寄存器寻址该逻 辑段中的指令或数据。
13
第4章 章 4. 过程定义伪指令
2
第4章 章
4.1 汇编语言简介
计算机可直接识别的是机器指令,用机器指令编写的程 序称为机器语言程序。 由于机器指令用二进制编码表示,不直观又难以记忆, 为解决机器语言使用上的不便,人们开始使用容易记忆和识 别的符号指令来编写程序。 汇编语言就是用与操作功能含义相应的缩写英文字符组 成的符号指令作为编程用的语言。
9
第4章 章 4.2.1 数据定义伪指令 数据定义伪指令有以下5种形式: (1)DB:定义字节变量 (2)DW:定义字变量 (3)DD:定义双字变量 (4)DQ:定义4字变量 (5)DT:定义10字节变量
10
第4章 章 2. 符号定义伪指令
符号定义伪指令主要是为程序中的表达式 赋予一个符号名,或定义新的类型属性等。 (1)EQU(等值)伪指令 (2)=(等号)伪指令 (3)LABLE(标号)伪指令 (4)PTR(属性修改)伪指令
29
第4章 章
4.4.4 循环结构程序设计 (1)初始化部分 是进入循环前的初始状态,包括设置计数器初值、地址指针、 寄存器或内存单元的初始化等。 (2)循环体 是完成循环工作的主要内容,是重复执行的程序段。 (3)参数修改部分 用于修改计数器值、操作数地址指针,为下次循环作准备。 (4)循环控制部分 用来控制循环运行和结束。
27
第4章 章
2. 多分支程序设计
当程序中需要根据不同判断条件进行多项操作时,就要用到多路分支 结构形式。 【例4.15】编写程序,完成下面的分段函数的计算,给定X为带符号的字 节数据。 1 Y= 0 -1 X>0 X=0 X<0
这是3路分支的程序设计,根据题目要求X为内存中的一个带符号数。 采用两重条件判断:首先判断X值的正负,若为负数,将-1送到Y中保存; 若为正数,再判断X是否为0,如果为0,将0送到Y中保存,否则将1送到Y 中保存。
;定义数据段 ;X为字节变量,赋初值-10 ;Y为字节变量,预留空间 ;定义代码段
;初始化DS ;取X值到AL ;AL和0比较 ;结果≥0转BIG ;否则-1送BL ;转到结束位置 ;判断AL=0转MIN ;否则1送BL ;转到结束位置 ;0送BL ;BL中内容送Y ;返回DOS ;代码段结束 ;汇编结束
20
第4章 章
2. 重复汇编 重复汇编伪指令有以下3种: (1)定重复伪指令REPT/ENDM (2)不定重复伪指令IRP/ENDM (3)不定重复字符伪指令IRPC/ENDM
21
第4章 章
4.4 基本程序结构及程序设计
程序设计的目的是把解决实际问题的方法转化为计算机 程序。在汇编程序设计过程中,首先对要解决的问题进行具 体的描述。 基本的程序结构包括顺序结构、分支结构、循环结构及 子程序结构。
11
第4章 章
3. 段定义伪指令 可对代码段、数据段、堆栈段及附加段进行定义和 赋名,并指明段的定位类型、组合类型及类别。 有以下两种段定义伪指令: (1)SEGMENT/ENDS伪指令 ‘ 格式: 段名 [定位类型] [组合类型] [‘类别’] …(段内语句系列) 段名 ENDS
12
第4章 章
28
DATA SEGMENT X DB -10 Y DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X CMP AL,0 JGE BIG MOV BL,-1 JMP EXIT BIG:JE MIN MOV BL,1 JMP EXIT MIN:MOV BL,0 EXIT:MOV Y,BL MOV AH,4CH INT 21H CODE ENDS END START
23
参考程序如下: 参考程序如下:
DATA SEGMENT ;定义数据段 X DB 5 ;给X、Y、Z赋初值 Y DB 7 Z DB 2 RESULT DB ? ;定义RESULT单元,预留空间 DATA ENDS ;数据段结束 CODE SEGMENT ;定义代码段 ASSSUME CS:CODE,DS:DATA START:MOV AX,DATA ;初始化DS MOV DS,AX MOV AL,X , ;将数据X送AL ;将数据 送 MUL X ;计算X2 MOV BX,AX ;将中间结果保存到BX MOV AL,Y ;将数据Y送AL MUL Y ;计算Y2 ADD AX,BX ;X2+Y2,结果保存到AX DIV Z ;计算(X2+Y2)/Z MOV RESULT,AL ;最后结果送RESULT单元 MOV AH,4CH ;返回DOS INT 21H CODE ENDS ;代码段结束 END START ;汇编结束 24
相关文档
最新文档