微机原理复习课件资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASSUME CS:CODE,DS:DATA EXP1 PROC FAR START: PUSH DS
MOV AX,0 PUSH AX
MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,BLOCK LEA DI,PDATA LEA BX,NDATA CLD MOV CX,PDATA-BLOCK GOON: LODSB TEST AL,80H JNZ MINUS STOSB (下接右边)
1.常量
(1)数字常量 二进制常量,以B结尾 十进制常量,以D结尾或省略(汇编语言中
默认无标记数为十进制数) 十六进制常量,以H结尾,如0A8C6H.
(2)字符串常量
用引号引起来的字符或字符串也代表常数。 例 : ’ A’,’BCDE’, 汇 编 时 被 翻 译 成 对 应 的 ASCII码41H和42H,43H,44H,45H。
JMP AGAIN MINUS: XCHG BX,DI
STOSB XCHG BX,DI AGAIN: LOOP GOON RET EXP1 ENDP CODE ENDS END START
由以上实例可知,每一语句行由4部分组成:
名字 操作码 操作数 ;注释
各部分之间至少要用一个空格作为间隔, 其中名字是一个符号,它可以是标号或变量, 它是由程序员建立起来的有特定意义的字符 系列,由英文字母、数字及专用字符组成,最 大长度不能超过31个,且不能由数字打头,不 能用保留字(如寄存器名,指令助记符,伪指 令)。
标号也有三种属性:段值总是在CS段寄存器中, 偏移量概念与变量同,类型分NEAR和FAR两种。
NEAR—表示标号所在语句与转移指令或调用指令 在同一码段内,只需改变IP即可。
FAR—标号所在语句与转移指令或调用指令不在 同一码段内。
若没有对类型进行说明,默认为NEAR。
4.表达式
表达式是常数、寄存器、标号、变量 与一些运算符组合的序列,分数字表达式和 地址表达式两种。汇编时按一定的优先规 则对表达式进行计算后可得到一个数值或 一个地址。
后 一 个 逻 辑 运 算 符 AND 在 汇 编 时 进 行 , 若 PORT_VAR为81H,则汇编后表达式算出为80H.执行 前一个指令助记符AND时,将(DX)与80H相与,结果 在DX中。
操作数可能放在存储器中,这就涉及一个地址 问题。程序中遇到转移指令或调用指令,涉及地 址转移,若采用具体地址就不很方便,一旦有错 改动就很麻烦。于是人们采用标号或符号来代 替地址,例:
LP1: …

LOOP LP1 汇编语言—用助记符,符号地址以及标号等符 号书写的程序。
用汇编语言编写的程序叫源程序。
2.变量
变量是内存中的数据区,在程序中作为存 储器操作数来使用。如例子中BLOCK(在数 据段中定义)
变量有三种属性: ①段 值—变量定义所在段的段地址 ②偏移量—变量单元地址与段起始地址之
间的位移量。 ③类 型—有字节、字和双字三种。
3.标号
标号是某条指令所存放单元的符号地址,可作为 转移指令或CALL指令的转移地址。
操作码是一个助记符,它可以是指令、伪
指令(又叫伪操作)或宏指令。
操作数由寄存器、存储单元、数据项或其 表达式构成。汇编时一个表达式得到一个值。
注释用来说明程序或语句的功能,用分号; 作为注释开始。
其中名字和注释视情况而定,可有可无.
4.1.3 数据项及表达式
数据项包括常量、变量、标号及表达式, 下面分别加以介绍。
汇编源程序需翻译成机器语言,变成可执行文 件,机器才能执行,这个翻译过程叫汇编。
汇编语言是面向具体计算机硬件的语言,和机 器密切相关。它最大缺点是可读性差,编程效率 低。
高级语言—编程时不需要对机器指令系统有深 入了解,稍加培训即可掌握。可读性强,功能强。
为什么要用汇编语言?汇编语言编写的程序节省 内存,执行速度快,并为பைடு நூலகம்户直接控制对象提供了 手段。故实时性要求很高的程序多采用汇编语言 程序。
这两种语句的差别: 在形式上:带不带冒号,是否可转向它. 在本质上:汇编时能否形成对应的机器码.
4.1.2 汇编语言语句类型及格式
汇编语言的一个实例
DATA SEGMENT BLOCK DB 43H,0ABH,… PDATA DB 20 DUP(?) NDATA DB 20 DUP(?) DATA ENDS CODE SEGMENT
4.1.1 汇编语言源程序的结构
源程序通常由一个或几个程序模块组成, 每个模块包括数据段、堆栈段和若干代码 段。代码段可有若干个过程,过程中的语句 分为两类:
指令性语句,其格式为: 标号:(前缀)指令助记符 操作数;注释 指示性语句,又叫伪指令,其格式为: 变量 伪指令 操作数 ;注释
指令性语句是计算机可执行的,而指示 性语句不能执行,用来定义变量,分配存储 单元,指示程序开始和结束等。
下面介绍五种运算符:
(1)算术运算符
有+、-、*、/,以及MOD,其中MOD表示除法运算 后得到的余数。例:
19/7的商是2,19 MOD 7则为5(余数) 算术运算符可以用于数字表达式,例: MOV AL,2*7 汇编后为B0,0E 算术运算符也可以用于地址表达式,对地址运算 的结果应有明确的物理意义,例两个地址的乘或除 无意义,而加或减则可以,例: LEA SI,SUM+3 表示变量SUM的地址加上3得到的和作为新存储器 地址。
第4章 汇编语言程序设计
4.1 汇编语言源程序 机器语言—用二进制数来表示指令和数据.
B0 64 什么意思?这就是机器语言。既 不直观,又不易理解和记忆.
MOV AL,64H ;大家很清楚,这就是助 记符。
助记符—反映指令的功能和主要特征,便 于人们理解和记忆。
指令除了操作码以外,还有一个操作数问题。
(2)逻辑运算符
逻辑运算符有AND、OR、XOR和NOT,它们只能用 于数字表达式中。
例:MOV CL,36H AND 0FH
经汇编后:MOV CL,06H
这些逻辑运算符也是8086/8088的指令助记符, 会不会造成混乱呢?不会的,前者在汇编时进行,而 后者在指令执行时进行的。
例:AND DX,PORT_VAR AND 0FEH
相关文档
最新文档