华东理工大学微机原理历年真题第四章1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
源程序
汇编程序
目标程序
源程序
编译程序
目标程序
比较:
(1)机器语言:不易记忆和理解,使用和修改麻烦 但程序效率高,执行最快。 (2)汇编语言:执行速度与机器语言相当 比机器语言易理解 仍不能独立于机器 多用于实时控制,实时通信程序 (3)高级语言:易学习,使用方便,通用性强, 源程序较短,但目标程序大 执行时间比较长,效率低
例1:TWO_BYTE DW ?
ONE_BYTE EQU BYTE PTR TWO_BYTE
(1) TWO_BYTE定义类型是字。 (2)PTR建立一个新的存储器操作数ONE_BYTE, 由PTR左边的BYTE规定了类型为字节。 (3) 这样TWO_BYTE只能用于字操作,如: MOV TWO_BYTE,AX ONE_BYTE只能用于字节操作,如: MOV AL,ONE_BYTE
3. 标号(Lable)
某条指令所存放单元的地址。 属性:(1)段值 (2)偏移量 (3)类型:NEAR 近,只改变IP FAR 远,改变CS和IP
4. 数
常数也以符号的形式出现,便于修改。 如: COUNT EQU 100
返回
5. 其它符号
三、表达式(Expressions)
5. 保留字(Reserved words)
(1)指令助记符,如:ADD,SUB,MOV (2)寄存器名,如:AX,AL,SP (3)伪指令,如:SEGMENT,END (4)其它保留字,如:BYTE,WORD
6. 注释(Comment) ;后的任意字符序列,直至行末。
返回
表达式由标志,符号通过运算符组合 起来。 1. 操作数(Operands)
一个操作数,代表一个数据,或一个寄存 器名,一个存储单元地址。 (1) 常量操作数:如100,COUNT (2) 存储器操作数:为标识符,分为标号和 变量。
2. 运算符(Operators)
一个运算符取一个或多个操作数的值, 形成一个新值。
例:MOV AX,SEG BUFFER1 ;数据段地址→AX MOV DS,AX
(2) 偏移地址 OFFSET
格式:OFFSET 变量或标号 功能:返回变量或标号的偏移地址
例:MOV BX,OFFSET BUFFER1 MOV SI,OFFSET BUFFER2
(3) 类型 TYPE
二、符号(Symbol)
代替存储单元,寄存器,数据,表达式等, 是一种标识符。
1. 寄存器(Registers)
代表某一操作数,为8位或16位
2. 变量(Variable)
存放在存储单元中的操作数,程序中出现 的是存储单元地址。
(1) 段值(SEGMENT):段地址的高16位,低四位为0 (2) 偏移量(OFFSET):段内偏移量16位 (3)类型(TYPE):字节(BYTE),字(WORD),双字DWORD
(5) SIZE
格式:SIZE 变量 功能:返回该变量包含的总字节数。 SIZE=TYPE×LENGTH 例:
SIZE SIZE SIZE MOV BUFFER1=100 BUFFER2=400 BUFFER3=400 BX,SIZE BUFFER2 ;400→BX
说明:①两个操作数,或都为数字,或是同一段的 存储单元地址,结果总是一个数值。 ②关系是假,数值为0 关系是真,数值为FFFFH
例1:MOV BX,PORT_VAL LT 5
1) 若PORT_VAL<5 关系为真,汇编后产生语句为 MOV BX,0FFFFH 2)若PORT_VAL≥5 关系为真,汇编后产生语句为 MOV BX,0
说明:
(1) 定义数据是使汇编程序在汇编时 为数据分配存储单元。
(2) ?表示内容不定,但保留存储单 元。 (3) DUP后的()中给出一个初值(或一 组初值),前面的数字为初值的重复次 数。 18
2. 分析运算符
功能:把存储器单元地址分解成它的组 成部分,如段地址、偏移量和类型。 运算符:SEG 段地址 OFFSET 偏移地址 TYPE 类型 LENGTH 单元数 SIZE 字节总数
回
第三节
伪指令
一、符号定义语句 二、数据定义语句 三、段定义语句 四、过程定义语句 五、结束语句
一、符号定义语句(Symbol)
1. 等值语句 格式:NAME EQU EXPRESSION
功能:用来给变量,标号,常数,指令,表达式等
定义一个符号。
例: BOILING_POINT EQU 212 ;常数赋给符号名 NEW_PORT EQU PORT_VAL+1 ;表达式赋给符号 A1 EQU [BX+SI] ;存储单元内容赋给符号 B1 EQU OFFSET A1 ;偏移地址赋给符号 COUNT EQU CX ;COUNT定义为CX的同义语
第一节
汇编语言程序格式
源程序分段,若干段形成一个源程 序,每段由若干语句行组成。
NAME1 SEGMENT 语句 NAME1 ENDS NAME2 SEGMENT … NAME2 ENDS … END <标号> ;段开始
;段结束
16
返回
第二节
语句行的构成
语句行:由标记(Token)及分隔符按一 定规则组织起来的。
标记 符号 表达式 语句
一、标记
宏汇编源程序的最小的,有意义的单位。
1. 字符集
(1)字母:大小写英文字母 (2)数字:0--9 (3)特殊字符:+ - * / = … 可打印字符 制表符,回车等不可打印字符
2. 界符(Delimiters)
界符为特殊字符,表明某个标记的结束。 如:, ; < - ? /
(5) 合成运算符
由已存在的存储器操作数生成一个段值和 偏移量相同,而类型不同的新的存储器操作数。
返回
四、语句(Statements)
1. 指令性语句
即指令,汇编程序把它们翻译成机器代码。 如: MOV,ADD,JMP
2. 指示性语句
即伪指令,汇编程序并不把它们翻译成机 器代码。伪指令用来为汇编程序提供某些信息, 让汇编程序在汇编中执行某些特定功能。 如:规定一个程序的数据段从哪里开始; 分配存储单元。
3. 合成运算符
(1) PTR 格式:类型/距离 PTR 变量或标号 功能:将左边的类型属性赋给右边的变 量或标号。
注意:(1) PTR本身不分配存储单元,仅给已分配的 存储单元赋予新的属性,以保证运算时操 作数类型匹配。 (2) 常与类型BYTE,WORD,DWORD, NEAR,FAR连用。
说明:
(1) 指令格式 标号:助记符 参数,…参数 ;注释 伪指令格式 名字 命令 参数,…参数 ;注释 注意:指令标号后有冒号,伪指令后没有。 (2) 指令的标号与指令的地址相联,可作为 JMP和CALL指令的目标操作数。 伪指令的名字与指令的地址毫无关系,绝 不能转向它。 返
3. 解除语句 格式:PURGE 符号1,符号2,...
功能:已经用EQU定义的符号,不用了可用 PURGE语句来解除。
例: PURGE NEW_PORT NEW_PORT EQU PORT_VAL+10 解除后的符号又可用EQU来重新定义了。
返回
二、数据定义语句(Data)
例2:与逻辑运算符结合用
MOV BX,((PORT_VAL LT 5)AND 20)OR((PORT_VAL LT 5)AND 30)
1) PORT_VAL<5为:MOV BX,20 2) PORT_VAL≥5为:MOV BX,30
17
(4) 分析运算符
分解成 存储器单元地址 段地址 偏移量 类型
(1) 算术运算符:如+ - * / MOD 对地址的运算如:加,减 (2) 逻辑运算符:如AND,OR,XOR, NOT
(3) 关系运算符:
相等 EQ(Equal) 不等 NE(Not Equal) 小于 LT(Less Than) 大于 GT(Greater Than) 小于或等于(Less Than or Equal) 大于或等于(Great Than or Equal)
(4) LENGTH
格式:LENGTH 变量 功能:返回一个与存储器地址操作数相 联系的单元数(字节,字,双字)。 注意: 存储区必须用DUP()定义,否则返回1 例:
MOV CX,LENGTH BUFFER1 ;100→CX MOV BX,LENGTH BUFFER2 ;200→BX
2. 等号语句 格式:NAME=EXPRESSION
功能:与EQU的功能相同,区别在于EQU的左边标 号不能重新定义,而=语句可以。 例: EMP=6 EMP=EMP+1 A1=BX+SI MOV AX,[A1] ;[BX+SI]单元内容→AX B1=ADD A1=BX MOV CX,[A1] ;[BX]单元内容→CX
格式:TYPE 存储器操作数 功能:返回存储器操作数的类型 存储器操作数 类型 数据字节 1 数据字 2 数据双字 4 NEAR指令单元 -1 FAR指令单元 -2
注意:(1) 字节,字,双字的类型分别是它们所占 的字节数。 (2) 指令单元的类型没有实际的物理意义。
3. 常量
(1)数字(整数)常量:二进制 以B结束 十进制 十六进制 以H结束 (2)字符串常量:单引号内的ASCII字符构成 ‘A’
4. 标识符(Identifiers)
程序员建立的有意义的字符序列,如SUM。 最多为32个字母,数字,特殊字符(?@-$), 不能是数字打头。
BUF4 DW 4 DUP(?)
;BUF4单元开始留出4个字 单元,内容不定
BIGGEST_THING DD 12345678H ;双字,定义4个字节 IN_PORT DB PORT_VAL ;初始值为表达式,PORT_VAL已赋值 BUF5 DB 6 DUP(0) ;BUF5开始的6个单元,初始值为0 BUF6 DB 4 DUP(1,2DUP(20H)) ;DUP嵌套,内存放 次数 01,20H,20H,01,20H,20H…… 重复四次
第四章
汇编语言
汇编语言程序设计
汇编语言程序格式 语句行的构成 伪指令
汇编语言程序设计及举例
机器语言:计算机执行的指令 一组二进制代码 最原始编写程序的方式 汇编语言:利用指令的助记符、符号地 址、标号来编写的语言。 说明:汇编语言是面向机器的语言, 和机器的硬件密切相关。 高W,DD,DQ,DT 功能:DB定义字节,DW定义字,DD定义双字 DQ定义4个字,DT定义10个字。 例:
THING DB 25 ;存储单元THING处存放25 BUF1 DB ? ;安排存储单元BUF1,内容不定 BUF2 DB 9 DUP(?) ;()中为值,9为重复次数,BUF2 单元开始留出9个单元,内容不定 BUF3 DB 4142H ;42H放BUF3单元,41H放 BUF3+1单元
若在一个程序的数据段定义:
DATA_TABLES BUFFER1 BUFFER2 BUFFER3 DATA_TABLES SEGMENT DB 100 DUP(0) DW 200 DUP(20H) DD 100 DUP(13) ENDS
(1) 段地址SEG
格式:SEG 变量或标号 功能:返回变量或标号的段地址
LITTLE_CYCLE DW CYCLE ;CYCLE的段内偏移放入 LITTLE_CYCLE,LITTLE_CYCLE+1 BIG_ CYCLE DD CYCLE ; CYCLE段地址和偏移,4个字节 POWERS_2 DB 1,2,4,6,16 ;参数为一个表,5个字节 EXAM1 DB ‘THIS IS A EXAMPLE’ ;定义了字符串 COUNT DT ? ;定义了10个字,内容不定