第三章 80868088汇编语言程序设计
chapter 4-3 80868088汇编语言程序设计

DI, D1 DX, [DI] CX, [DI+2] BX, [DI+4] SI, [DI+6] DI, D2 DX, [DI] CX, [DI+2] BX, [DI+4] SI, [DI+6] AL, 0 AL, 0 AH, 4CH 21H BG
;将D1表示的偏移地址送DI ;取第1操作数到寄存器中
注意:上机汇编、连接时,文件扩展名可省去。
8
4.3.2 分支结构程序
要求计算机作出判断,根据判断结果做出不同处理。即 根据某条指令运行的结果是否满足一定的条件来改变程
序执行的顺序,从而去执行不同的分支程序。
条件
是
分支 1
否
分支 2
9
【注意】:
带符号数的条件转移指令: JG/JNLE、JL/JNGE、JGE/JNL、JLE/JNG
;将D2表示的偏移地址送DI
;最高位进位放入AL ;程序结束,返回DOS操作系统
汇编语言上机前的软件准备:
MS-DOS操作系统(如:MSDOS6.2、MSDOS7.0 等) 文本编辑器(如:记事本、WORD、 等) 汇编程序(如:MASM.EXE、ASM.EXE等) 连接程序(如:LINK.EXE等) 调试程序(如:DEBUG.EXE等)
第四章
8086/8088汇编语言程序设计
主讲教师:胡晓娟
4.3 8086/8088汇编语言程序设计基本方 法
进行汇编语言程序设计可以参考下述步骤: ① 分析问题,建立基于问题的数学模型
② 设计算法
③ 绘制流程图或结构图 ④ 编写程序 ⑤ 上机调试 在DOS环境下的8086/8088汇编语言程序结束时,通常用DOS的 4CH号中断调用,以便使程序控制返回 DOS操作系统。 MOV AH, 4CH INT 21H
第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语⾔程序设计微机原理第2版课后答案第三章 8088汇编语⾔程序设计本章的主要内容是汇编语⾔语句⾏的构成,源程序的结构,汇编语⾔程序设计⽅法。
3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分⽀、循环结构的程序设计,⼦程序结构的设计与调⽤,中断指令的应⽤。
另外,汇编语⾔伪指令的使⽤、源程序的结构等也是必须掌握的。
3.1.1 汇编语⾔语句⾏的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最⼤长度不超过31个字符。
(2)保留字:汇编语⾔中保留下来的具有特殊⽤途的字串,如指令、伪指令、寄存器名等都是保留字。
保留字不可⽤作标识符。
(3)界符:程序或指令中两个部分的分隔符号。
汇编语⾔源程序中可⽤的界符:′〈〉;,:? $ () + - = &[] * / ·(4)常量:数字常量,可以使⽤不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。
2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。
(2)变量:即内存单元的符号地址。
变量不能与保留字、段名重名。
它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。
类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。
(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。
标号不能与保留字重名,可使⽤字母、数字及下划线,但不允许⽤数字开头,字符个数不超过31个。
标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。
3.表达式表达式是作为语句的⼀个操作数,在汇编时⼀个表达式得到⼀个值。
(1)操作数数据——常数、符号常量;存储单元地址——常⽤符号地址表⽰。
(2)运算符算术运算符:+、-、*、/、MOD。
对地址的运算仅有+(加)、-(减)运算符。
汇编语言-计算机14级第三章 80868088寻址方式及指令系统3.3 第三章课件

* 用符号地址表示操作数时,方括号可加 可不加
【例3.5】
MOV AX, A1 ≡ MOV AX,[A1] MOV AX, VALUE ≡ MOV AX, [VALUE]
注意:双操作数指令中的两个操作数,不能同时 使用存储器寻址方式
信息工程学院
第3章 8086/8088寻址方式及指令系统
(4) 寄存器间接寻址
* 用于间接寻址的寄存器必须加方括号
* EA只能由BX、BP(操作数默认在堆栈段)、SI、DI指出
MOV AX,[CX]
* SRC 和 DST 的长度一致
MOV DL,[BX] ;[BX]指示一个字节单元
MOV DX,[BX] ;[BX]指示一个字单元
* 允许使用段跨越前缀 如:MOV AX,ES:[BX]
* 适于数组、字符串、表格的处理
信息工程学院
第3章 8086/8088寻址方式及指令系统
指令: MOV AX,[SI]
AX
DS
已知:(AX)=5 (SI)=20H
AH AL SI
(DS)=1000H
则PA=1000H×16+20H=10020H
指令执行后:
(AX)=0FFFFH,其他不变
数据段 10000H
* 寄存器只能使用BX、BP(操作数默认在堆栈段)、 SI、DI
* 可以使用段跨越前缀 例如:MOV AX,ES:STR[SI]
* 适于数组、字符串、表格的处理
信息工程学院
第3章 8086/8088寻址方式及指令系统
第三节 80868088汇编语言

三、汇编语言语句格式汇编语言程序由若干语句组成。
汇编语言语句类型:指令语句—完成操作功能,能编排(比翻译简单)成机器语言代码(即80x86指令系统的指令);伪指令语句—为汇编程序在编排源程序时提供有关信息;宏指令语句—分为宏定义和宏调用语句,编排时用宏定义代替宏调用语句。
汇编语言语句通用格式:[名字项] 操作项[操作数项] [;注释项]1、名字项组成:可由字母、数字、特殊字符(?、.、@、_、$)组成,数字不能作首字符,.只能作首字符。
类型:标号、变量。
(1)标号组成:①语句标号--由名字+冒号(“:”)组成;②过程名、段名等—只由名字组成。
属性:段属性—标号(定义时)所在段的起始地址;偏移属性—标号与所在段起始地址间字节数;类型属性—表明引用它时的特性,段内引用为NEAR,段间引用为FAR。
(2)变量组成:在除代码段外的段中定义,只由名字组成。
属性:段属性—变量(定义时)所在段的起始地址;偏移属性—变量与所在段起始地址间字节数;类型属性—表明为它所保留的主存字节数,DB/DW/DD/DQ/DT对应1/2/4/8/10字节。
思考:标号与变量的主要区别?指令中变量的数据类型如何表示?2、操作项组成:可为指令、伪指令或宏指令的助记符。
说明:指令助记符可带指令前缀。
示例:D_SEG SEGMENTNUM1 DB 10 DUP(10) ;数据定义NUM2 DW 20 DUP(0, 4 DUP(2))NUM3 DB 10H, 5 DUP(?)NUM4 DB ‘STRING’D_SEG ENDS ;假设DS指向D_SEG段MOV AX, SEG NUM1 ;等价于AX←(DS)MOV BX, SEG NUM2 ;AX与BX值相同MOV SI, OFFSET NUM1 ;NUM1相对于段的偏移量→SI MOV DI, OFFSET NUM2 ;等价于LEA DI, NUM2MOV AH,TYPE NUM2 ;2→AHMOV BH,LENGTH NUM2 ;20→BH(指最外层参数)MOV AL,LENGTH NUM3 ;1→AL(指第一个参数)MOV CL, SIZE NUM2 ;20*2→CLMOV CH, SIZE NUM4 ;1*1→CH(4)属性运算符PTR格式:<类型> PTR表达式PTR功能:用新类型取代表达式默认的数据类型PTR说明:①表达式为MEM操作数或变量时,类型可为BYTE、WORD、DWORD,表达式为标号时,类型可为NEAR、FAR;②仅改变数据类型属性,且仅在本语句有效。
第3章 80868088的指令系统

fill
F range list:填写存储单元
go
G [=address] [addresses]:运行
hex
H value1 value2
input
I port
load
L [address] [drive] [firstsector] [number]:装入命名过的文件
move
M range address
微型计算机原理与接口技术
汇编语言程序设计概述
编程语言分类 机器语言:计算机能直接识别并执行某种操作的二进制代码串 汇编语言:用指令助记符、符号地址和标号等书写程序的语言 高级语言:C语言等
汇编语言程序优点 (1)占用空间小 (2)运行速度快 (3)有直接控制硬件的能力
开发环境: DOS环境
微型计算机原理与接口技术
name
N [pathname] [arglist]:命名
output
O port byte
proceed
P [=address] [nuregister
R[F] [register]:显示和修改寄存器[标志寄存器]
search
S range list
trace
T [=address] [value]:跟踪(单步执行)
微型计算机原理与接口技术
语句格式: [名字] 助记符 [操作数1[, 操作数2]][;注释]
START
START CODE
PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV DX, SEG MOV DS, DX MOV DX, OFFSET MOV AH, 9H INT 21H RET ENDP ENDS END START
8086—8088汇编语言

暂存寄存器 ALU EU控 制器 标志寄存器 执行部件(EU) 8086/8088内部结构图 总线接口部件(BIU) Q总线 指令队列
第二章 80 从存储器中取出一条指令,执行完所取出的指令 后再去取下一条要执行的指令。一般CPU和总线工作 过程如下:
第一章 概
述(1.4.10)
11100111 + 11100000 111000111 “1” 舍去
[X+Y]补=[X]补+[Y]补 =11100111B+11100000B =11000111B X+Y=-0111001B=-57D
[X-Y]补=[X]补+[-Y]补 =11100111B+00100000B =00000111B X-Y=00000111B=7D
CPU t
(二个字节)
0000 0101
0000 0110
第一章 概
BCD码
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 00010000 00010010 00010011 00010100 00010100 00010101 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
第一章 概
述(1.4.9)
[X-Y]补=[X]补+[-Y]补 00011001 =00011001B+11100000B + 11100000 =11111001B 11111001 X-Y=-0000111B=-7D 例2 已知:X=-25D,Y=-32D,用8bit二进制补 码运算求 X+Y和X-Y的值 解:X=-25D=-0011001B Y=-32D=-0100000B [X]补=11100111B,[Y]补=11100000B [-Y]补=00100000B
80x86汇编语言程序设计 第3章 80x86指令系统和寻址方式PPT课件
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
3.2 80x86寻址方式
3.2.1 寻址、寻址方式的概念
寻址就是寻找操作数的地址。 寻址方式就是寻找操作数的方法。
操作数可以跟随在指令操作码之后,称为立即数;操作 数也可以存放在CPU内部的寄存器中,称为寄存器操作数。 绝大多数的操作数存放在内存储器中,称为存储器操作数。 指令指定操作数的位置,即给出地址信息,在执行时需要 根据这个地址信息找到需要的操作数。
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
第3章 80x86指令系统和寻址方式
教学要求:
1. 掌握一般指令系统的基本概念:指令格式、 功能和注意事项。
2. 重点掌握8086/8088指令系统中,各指令的 格式、寻址方式、指令类型 。
3. 了解其他(奔腾等)的寻址方式和指令类型。
合肥学院 计算机科学与技术系 何立新
•基址变址寻址
MOV AX , [ BP ] [ DI ]
•相对基址变址寻址 MOV AX , MASK [ BX ] [ SI ]
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
1) 立即寻址方式
定义:操作数作为指令的一部分而直接写在指令中,这种 操作数称为立即数,这种寻址方式也就称为立即数寻址方 式。
执行:4576H→AX
执行后:(AX)=4576H
CS→
AX
45
76
OP
76H
45H
MOV AX,4576H 指令的存储形式
合肥学院 计算机科学与技术系 何立新
《汇编语言程序设计》
2) 寄存器寻址方式
定义:指令所要的操作数已存储在某寄存器中,或把目标操 作数存入寄存器。把在指令中指出所使用寄存器(即:寄存 器的助记符)的寻址方式称为寄存器寻址方式。
8088汇编语言程序设计课程设计
8086/8088汇编语言程序设计课程设计设计背景汇编语言是计算机科学与技术专业中非常重要的一门课程,它是高级语言之后的一个阶段。
在本课程中,学生需要掌握8086/8088汇编语言的语法和应用。
为了更好地掌握汇编语言的使用,需要进行一定的课程设计练习。
设计目的本课程设计旨在帮助学生深入了解汇编语言的编写和实践操作,从而更好地掌握该技能。
该课程设计的主要目的包括:•加深学生对汇编语言的理解。
•培养学生的编程思维和动手能力。
•通过实践操作,让学生能够在以后的工作和学习中使用汇编语言编写程序。
设计内容本课程设计的主要内容包括以下几个部分:1. 编写程序学生需要使用8086/8088汇编语言编写程序。
编写过程中,需要注意程序的逻辑和语法。
程序可以有选择的使用一些特定的指令进行优化,以达到更高的执行效率。
2. 调试程序学生需要使用调试软件对编写的程序进行调试,以保证程序的正确性。
在调试过程中,需要注意调试工具的使用方法和操作步骤。
3. 撰写实验报告学生需要撰写课程设计实验报告,该报告需要包括以下主要内容:•设计目的和内容简介•程序设计思路和步骤•调试过程和结果分析•程序运行效果展示•总结和反思设计要求为了完成本课程设计任务,需要满足以下要求:1. 完成程序编写完成程序编写的任务,保证程序的正确性和合理性。
程序逻辑要清晰,格式化整齐,运行效率要高。
程序注释要清晰,要有比较好的可读性。
2. 良好的调试过程良好的调试过程是保证程序正确性的基础。
学生需要使用调试工具对程序进行调试,确保程序的正常运行。
在调试过程中,需要注意操作的步骤和方法。
3. 撰写实验报告实验报告需要各个方面都能全面体现学生的工作。
在撰写实验报告时,请注意实验报告的格式和内容要求,注意语言的规范性和格式的整齐性。
报告需要按时上交。
结束语本课程设计是学生在汇编语言学习的过程中,进行实践的重要环节,通过这个过程,学生能够更加全面的掌握汇编语言编程的技能。
第3章 8086∕8088汇编语言程序设计
【例3.11】负数统计 在内存中BUFFER地址起有10个字型 有符号数,统计其中负数的个数, 并存入Result单元中。 负数统计! DATA SEGMENT Buffer dw 2,10,-4,0,-3,5, … Result db ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,10 MOV DL,0 LEA BX, Buffer NEXT2:: MOV AX,[BX] AND AX,AX JNS NEXT1
BR_N DW ? BRDATA ENDS BRCODE SEGMENT ASSUME CS:BRCODE,DS: BRDATA START: MOV AX,BRDATA MOV DS,AX MOV AX,BR_N MOV CL,4
MUL CL LEA BX,BR_TAB ADD BX,AX JMP DWORD PTR [BX] BRCODE ENDS ROUTINE SEGMENT ASSUME CS:ROUTINE
第3章 8086/8088汇编语言程序设计
3.1 3.2 3.3 3.4 3.5 3.6 3.7
主要内容 汇编语言程序设计的基本步骤 顺序程序设计 分支程序设计 循环程序设计 子程序设计 宏汇编 库的使用
学习目标
了解:汇编语言程序设计步骤,汇编语言中 重复汇编、库的建立和使用方法。 理解:顺序、分支、循环结构程序设计的思 路和方法,子程序、宏汇编的结构和使用方法。 应用:掌握本章所介绍的顺序程序设计、分 支程序设计、循环程序设计、子程序设计、宏定 义、宏调用的格式和方法,以及其中参数的使用 ,并能够在实践中灵活运用。
图3-3 用户程序、DOS与BIOS关系
汇编程序设计第三章
其中,ADDR为转向的符号地 址,FAR PTR则是表示段间转 移的操作符。
第3章 8086/8088寻址方式及指令系统
例:
CSEG1
︰
SEGMENT
~ CSEG1段 ~ ~ ~ EAH 50H JMP指令 02H 00H 20H … 20000H ~ CSEG2段 ~ ~ ~ DSET 20250H 新(CS)=2000H 新(IP)=0250H 操作码
. . . . . . . . . 56H 34H
第3章 8086/8088寻址方式及指令系统
3.1.2 与转移地址有关的寻址方式
用来确定转移指令及转子指令的转向地址。
• 段内寻址(段内转移,不改变CS值) 段内直接寻址 段内间接寻址 JMP JMP JMP JMP JMP SHORT ADDR1 NEAR PTR ADDR2 WORD PTR TABLE [ BX ] FAR PTR NEXT DWORD PTR [ BX ]
第3章 8086/8088寻址方式及指令系统
MOV AX,[SI]
如(AX)=5,(SI)=20H, (DS)=1000H
则物理地址 =1000H×10H+20H=10020H 若(10020H)=0FFH, (10021H)=0FFH,则执行后: (AX)=0FFFFH,其他不变。
AX AH AL DS SI
则执行结果为: (AX)=5678H
第3章 8086/8088寻址方式及指令系统 (7) 相对基址变址寻址方式 • 在基址加变址寻址方式中的有效地址再加一个偏移值,即把一 个基址寄存器(BX,BP)的内容加上一个变址寄存器(SI, DI),再加上指令中8位或16位位移量与段寄存器(DS,SS) 的组合为操作数地址。 例如:MOV AX,MASK[BX][SI] MOV AX,[MASK+BX+SI] MOV AX,MASK[BX+SI] MOV AX,[MASK+BX][SI]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.3 汇编语言程序设计基本方法
3.1 程序设计语言概述
程序设计语言是专门为计算机编程所配置的语言。它们按照
形式与功能的不同可分为3种,即 :
机器语言—— 0、1二进制代码书写指令;难认,记,写。
★例:
JMP
MOV
BB
AX,SEG SUBP
MOV DX,OFFSET AA ; 假设AA为变量名
3.2.3 汇编语言的数据
4、数值表达式 一个数值表达式可自由常量、字符常量以及代表常量的名字 等用算术、逻辑和关系运算符(Operator)连接而成。 1)算术运算符 + 、-、*、/、MOD、SHR、SHL 如:MOV AX, 19 MOD 7 MOV BX, AA+1 MOV AX, BX SHR 3
3.2.2 汇编语言语句的类型和格式
指令助记符 主要为8086/8088CPU指令系统中指令助记符。 操作数 立即操作数 如:MOV BX,1000+5*3 寄存器操作数 如:MOV BX,AX 存储器操作数 如:mov bx,[100H] 注释 ;注明语句或程序的作用
3.2.2 汇编语言语句的类型和格式
开始 指令1 指令2 ……
指令n
结束
例:对两个8字节无符号数求和,这 两个数分别用变量D1及D2表示。 将两数之和的最高位进位放在AL中, 两数之和的其他位按从高到低顺序依 次放在SI,BX,CX,DX中。
程序如下:
D D1 D2 D C SEGMENT DB 12H,34H,56H,78H,9AH,0ABH,0BCH,0CDH DB 0CDH,0BCH,0ABH,9AH,78H,56H,34H,12H ENDS SEGMENT LEA DI,D2 ASSUME CS:C, DS:D ADD DX,[DI] BG: MOV AX,D ADC CX,[DI+2] MOV DS,AX ;给DS赋段值 ADC BX,[DI+4] LEA DI, D1 ;偏移地址送DI ADC SI,[DI+6] MOV DX,[DI] ;取第1操作数 MOV AL,0 MOV CX,[DI+2] ADC AL,0 MOV BX,[DI+4] MOV AH,4CH MOV SI,[DI+6] INT 21H CLC C ENDS END BG
3.2 8086/8088汇编语言的基本语法 3.2.1 认识汇编程序 3.2.2 汇编语言语句的类型和格式 3.2.3 汇编语言的数据
3.2 8086/8088汇编语言的基本语法
本节知识点:熟悉汇编语言程序的基本结构 掌握汇编语言语句几种类型、格式 掌握汇编语言数据格式 熟悉伪指令的构成、种类、作用
3.2.1 认识汇编程序---段结构
汇编源程序一般由若干段组成,每个段以SEGMENT作为段的开 始,以ENDS作为段的结束,这两者前面都要冠以相同的名字。 段分为:代码段、堆栈段、数据段和附加段4种,但代码段 与堆栈段是不可少的,数据段与附加段可根据需要设置。 整个源程序必须以END语句来结束,它通知汇编程序停止 汇编。END后面的标号START表示该程序执行时的起始地 址。
2、伪指令语句的格式 [名字] 伪指令 [参数表][;注释] 1)名字 用标识符定义的常量名、变量名、过程名、段名以及宏名等。 注意:汇编程序是不区分大、小写;名字的后面没有冒号。 例如:ONE DATA STRING AA DATA EQU 1 ;常量名 ;段名 ;变量名
SEGMENT DW ENDS 1,2,3
3.3.2 分支结构程序
利用转移指令,控制计算机执行某段程序或不执行某段程序。
满足判断条件 1?
2)逻辑运算符---AND OR NOT XOR
如:MOV AX, 9999H XOR 0F0F0H
3.3 汇编语言程序设计基本方法
本节重点:熟悉程序设计的基本步骤
掌握结构化程序设计的概念
掌握3种基本结构的程序设计方法 了解过程设计的步骤
3.3.1 顺序结构程序
顺序结构程序, 在程序中不包含任何转移类指令. 执行时 按指令的先后次序从第一条开始逐条执行,直至程序结束.
DATA STACK
ENDS SEGMENT
DB 200 DUP(0)
STACK CODE
ENDS SEGMENT
ASSUME
DS:DATA,SS:STACK,CS:CODE
;由ASSUM伪指令定义各段寄存 器的内容
3.2.1 认识汇编程序
START: MOV MOV MOV MOV MOV NEXT: ADD AX,DATA DS,AX CX,50 AX,0 BX,1 AX,BX ;将DS初始化为数据段首址 的段值DATA ;CX置入循环计数值 ;清AX累加器 ;BX置常量1 ;累加奇数和TA 3.宏指令
伪指令助记符 参数,参数,…… ;注释
DATA SEGMENT
DW 20H,-30H ;定义变量
ENDS
是以某个宏名字定义的一段指令序列。
3.2.2 汇编语言语句的类型和格式
二、汇编语言语句的格式 1、指令性语句 [标号:] 指令助记符 [操作数表][;注释] 标号(Label) 1)标号及其属性 标号作为程序转移的目标地址--指令的符号地址(逻辑地址) 标号3种属性——段地址、段内偏移量以及类型(near/far) 标号定义:字母开头,由字母、数字、特殊字符(?、_等) 出现位置:循环、转移、调用指令中
3.2.1 认识汇编程序—完整的定义格式
例:求从1开始连续50个奇数之和,并将结果存放在名字为SUM的字 存储单元中。
DATA SUM SEGMENT DW 0 ;定义数据段,DATA为段名 ;由符号(叫变量名)SUM指定的 内存单元类型定义为一个字,初 值为0 ;定义数据段结束 STACK ;定义堆栈段,这是组合类型伪指 令,它规 定在伪指令后须跟 STACK类型名 ;定义堆栈段为200个字节的连续 存储区, 且每个字节的值为0 ;定义堆栈段结束 ;定义代码段
3.2.2 汇编语言语句的类型和格式
一、汇编语言语句的种类 语句的种类-有3种基本语句:
指令语句
伪指令语句 宏指令语句
3.2.2 汇编语言语句的类型和格式
1.指令语句(也称为硬指令) 是一种执行性语句,它在汇编时,汇编程序将为之产生一一对应 的机器目标代码。
标号: 指令助记符 操作数,操作数
汇编语言—— 助记符、符号地址、标号书写程序;通用型、可移植性差; 但可直接对硬件操作。 高级语言—— 通用性好、简单易读、易写;但编译时间长,占内存;对硬 件编程复杂。
为什么学习汇编语言?
汇编语言本质是机器语言,可直接对硬件控制,运行速度 快,占用内存少 适用场合:要求执行时间短,占用小存储容量,如实时控 制软件、底层开发、直接控制硬件的软件开发
十六进制
0B800H
01100100B
二进制
2) 字符串
字符串常量是用单引号或双引号括起来的单个字符 或多个字符 其数值是每个字符对应的ASCII码值 例如: ‘d’(等于64H) ‘AB’(等于4142H)
‘Hello, Assembly !’
3) 符号常量
符号常量使用标识符表达一个数值 MASM提供等价机制,用来为常量定义符号名 符号定义伪指令有“等价EQU”和“等号=”: 符号名 EQU 数值表达式 符号名 EQU <字符串> ;MASM 5.x不支持 符号名 = 数值表达式 EQU用于数值等价时不能重复定义符号名,但“=”允 许有重复赋值。例如: X= 7 ;等效于:X qeu 7 X= X+5 ;“X EQU X+5”是错误的
8000h,?,'AB' 64h maxint maxint dup(0)
字变量定义实例
3.2.3 汇编语言的数据—地址参数
3、地址型参数 指令参数可为地址型的,该参数表示存储单元的地址(值) 地址型参数主要形式:
标号 名字
变量名 段名 过程名(子程序名)
;假设BB为标号
;假设SUBP为过程名
DB‘Hello, Everybody!’,0DH,0AH,‘$’;
3.2.2 汇编语言语句的类型和格式
2)伪指令 符号定义伪指令—EQU/= 数据定义伪指令—DB/DW/DD 段定义伪指令—SEGMENT/ENDS/ASSUME 过程定义伪指令—PROC/ENDP 定位伪指令—ORG 3)伪指令参数 各参数之间用逗号分隔,可以是常量、变量名、表达式
INC
INC DEC
BX
BX CX
;求下一个奇数
;循环计数器作减1计数
JNE
MOV MOV
NEXT
SUM,AX AH,4CH
;未计完50次时,转至NEXT循环
;累加和送存SUM单元 ;DOS功能调用语句,机器将结束本
INT
CODE ENDS END
21H
START
程序的运行,并返回DOS状态
;代码段结束 ;整个程序汇编结束
3.2.3 汇编语言的数据——变量
2、变量 必须事先定义才能有效 变量定义为变量申请固定长度的存储空间,并将该空间的基 址转换为符号地址 变量定义使用伪指令实现 变量定义的同时可对存储单元初始化 格式——变量名 伪指令助记符 初值表 初值表是用逗号分隔的参数
3.2.3 汇编语言的数据—变量
1) 数值常量
指由10、16、2和8进制形式表达的数值,各种进制 的数据以后缀字母区分,默认不加后缀字母的是十 进制数
十进制 由0 ~ 9数字组成,以字母D(d)结尾(缺 省情况可以省略) 由0 ~ 9、A ~ F数字组成,以字母H(h)结 尾,以字母开头的常数需要加一个前导0 由0和1两个数字组成,以字母B(b)结尾 100,255D 64H,0FFH