计算机组成与汇编语言第六章笔记整理.docx
- 文档编号:12390508
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:20
- 大小:27.48KB
计算机组成与汇编语言第六章笔记整理.docx
《计算机组成与汇编语言第六章笔记整理.docx》由会员分享,可在线阅读,更多相关《计算机组成与汇编语言第六章笔记整理.docx(20页珍藏版)》请在冰豆网上搜索。
计算机组成与汇编语言第六章笔记整理
计算机组成与汇编语言笔记整理
第6章:
汇编语言
●本章要点
●6.1汇编语言语句
●6.1.1汇编语言语句格式
指令语句的格式:
[标号:
]指令助记符[操作数[,操作数]][;注释]
伪指令语句的格式:
[名字]伪指令助记符[操作数[,操作数]][;注释]
●6.1.2伪指令运算符和操作数
1.伪指令运算符
(1)算术运算符
算术运算包括:
加(+)、减(-)、乘(*)、除(/)、模除(MOD)。
其中,模除(MOD)表示两整数相除后取余数。
例6.1已知符号常量NUM=51,求下列指令的汇编结果(表达式的值):
MOVAX,NUM/9
MOVAX,NUMMOD9
MOVAX,NUM*5
汇编的结果是:
MOVAX,5
MOVAX,6
MOVAX,255
(2)逻辑运算符和移位运算符
逻辑运算包括:
逻辑乘(AND)、逻辑加(OR)、按位加(XOR)和逻辑非(NOT)。
逻辑运算是按位进行的。
移位运算包括:
右移(SHR)和左移(SHL),表示将二进制常量右移或左移运算符右边所规定的位数,所空出的位均补0。
例6.2求下列指令汇编的结果。
MOVAL,4CHSHL2
MOVAL,NOT0FFH
ANDAL,4CHAND0F0H
XORAL,4CHXOR0FFH
汇编的结果是:
MOVAL,30H
MOVAL,0
ANDAL,40H
XORAL,0B3H
(3)关系运算符
关系运算包括:
相等(EQ)、不等(NE)、小于(LT)、大于(GT)、小于等于(LE)和大于等于(GE)。
它们的运算结果是两个特殊的常量,若关系不成立,结果为0;否则结果为0FFH或0FFFFH。
例6.3求下列指令汇编的结果。
MOVAL,4CHEQ2
MOVAL,4CHGT1
汇编的结果是:
MOVAL,0
MOVAL,0FFH
(4)返回值运算符
①取类型算符TYPE
格式为:
TYPE变量或标号
如果TYPE后面跟的是变量,则汇编程序将回送该变量类型的字节数:
字节类型为l,字类型为2,双字类型为4,4字类型为8,10字节类型为10。
如果是标号,则汇编程序将回送代表该标号类型的数值:
NEAR型为-1(0FFFFH),FAR型为-2(0FFFEH)。
②取变量所含的数据存储单元个数算符LENGTH
格式为:
LENGTH变量
返回利用DUP定义的数组中元素的个数,即重复操作符DUP前的整数n值。
如果变量定义语句中没有使用DUP,则返回1。
如果嵌套使用了DUP,则只返回最外层的重复数。
③取变量所含的数据存储区大小算符SIZE
格式为:
SIZE变量
它的取值为该变量所占数据存储区的字节数。
SIZE算符与LENGTH算符的关系是:
LENGTH变量×TYPE变量,即等于上述两种算符取值的乘积。
④取偏移地址算符OFFSET
格式为:
OFFSET变量或标号
它的取值为其后变量或标号的偏移地址。
⑤取段地址算符SEG
格式为:
SEG变量或标号
它的取值为其后变量或标号所在段的段地址。
(5)属性运算符
①类型运算符PTR
格式为:
类型PTR地址表达式
其中类型字段表示所赋予的新的类型属性,对于变量可以是BYTE、WORD、DWORD,对于标号可以是NEAR、FAR。
例如指令:
MOV[BX],0FFH
两操作数类型均不明确,应写成:
MOV[BX],WORDPTR0FFH
②段操作符“:
”
格式为:
段寄存器名:
地址表达式
或:
段名:
地址表达式
③短转移算符SHORT
例如:
JMPSHORTTAG
④定义类型算符THIS
格式为:
THIS类型
⑤字节分离算符HIGH和LOW
格式为:
HIGH/LOW常量或地址表达式
运算符的优先级别,从高到低排列如下:
①括号的项。
②LENGTH,SIZE。
③PTR,OFFSET,SEG,TYPE,THIS及段操作符“:
”
④HIGH,LOW
⑤*,/,MOD,SHL,SHR
⑥+,-
⑦EQ,NE,LT,LE,GT,GE。
⑧逻辑运算:
NOT,AND,OR,XOR。
⑨SHORT。
2.操作数
(1)数值表达式
①常量
可分为数值常量和符号常量。
②数值表达式
由常量、符号常量以及运算符组成,其运算结果为数值常量。
汇编语言允许对常量进行三种类型的运算:
算术运算、逻辑运算、关系运算。
(2)地址表达式
由变量、标号、常量、寄存器(BP、BX、SI、DI)间址的内容(用寄存器名加方括号表示)和运算符组成。
地址表达式的值一般是偏移地址具有段、偏移地址及类型三个属性。
地址表达式的运算符可以使用数值表达式的运算符,也可以使用属性运算符和返回值运算符。
例EQU20H
BDB10H,30H
试分析6.5设符号常量A和变量B定义如下:
A下列指令的源操作数。
①MOVAX,A+1
数值表达式,执行后寄存器AX的值为21H。
②MOVBL,B+1WORDPTRB
地址表达式,执行后,寄存器BX的值为3010H。
地址表达式,执行后,寄存器BL的值为30H。
③MOVBX,
6.2汇编语言伪指令
6.2.1符号定义伪指令
1.等价伪指令
语句格式:
符号名EQU表达式
功能:
用来为常量、表达式以及其它各种符号定义一个等价的符号名,但它并不申请分配存储单元。
用法①:
定义一个常量符号。
例6.6以下是用EQU定义的符号常量:
AEQU5
BEQUA*3+2
CEQUB*3+2
用法②:
与特殊运算符PTR或THIS连用,可以给变量或标号定义新的类型属性并重新命名,但其段属性和偏移地址属性不变。
例6.7某程序的数据段中有如下几条伪指令语句,试分析各变量的属性。
DATASEGMENT
DDBUFEQUTHISDWORD
BUFDB100DUP(?
)
DWBUFEQUWORDPTRBUF
DATAENDS
...
FIRSTEQUTHISFAR
用法③:
为较复杂的表达式及源程序中的任何符号定义一个替换名。
例如:
MOVEEQUMOV
COUNTEQUCX
SUM(X,Y)EQUX+Y
则下列指令等价于:
MOVEAX,BX;等价于:
MOVAX,BX
MOVCOUNT,100;等价于:
MOVCX,100
ADDAX,SUM(30,50);等价于:
ADDAX,80
语句格式:
符号名=表达式
功能:
该语句的功能与EQU语句类似,但有一个区别:
EQU不能重复定义符号名,而等号语句能对所定义的符号名再重新定义,给它赋予新的值。
同一符号多次定义时,以最后一次定义的值为准。
2.等号伪指令
语句格式:
符号名=表达式
功能:
该语句的功能与EQU语句类似,但有一个区别:
EQU不能重复定义符号名,而等号语句能对所定义的符号名再重新定义,给它赋予新的值。
同一符号多次定义时,以最后一次定义的值为准。
3.定义符号伪指令
语句格式:
变量名或标号LABEL类型
功能:
为当前存储单元定义一个指定类型的变量或标号。
它的功能与语句“变量名或标号EQUTHIS类型”的功能相似。
6.2.2数据定义伪指令
语句格式:
[变量名]数据定义伪指令操作数1
[,操作数2,...][;注释]
功能:
定义一数据存储区,其类型由所使用的数据定义伪指令指定。
1.变量名
变量名是可选的,需要时由用户自己命名。
它是该数据区的符号地址,也是其中第一个数据项的偏移地址。
程序可以通过变量名引用其中的数据。
2.数据定义伪指令
常用的数据定义伪指令有DB(字节)、DW(字)、DD(双字)、DQ(8字节)、DT(10字节)。
3.操作数
数字常量及数值表达式。
字符串常量。
在汇编语言中用单引号括起来,其值为各字符的ASCII码值。
地址表达式。
此时操作数为地址符号,若只定义偏移地址,则使用DW伪指令;若定义双字长地址指针(16位偏移地址和16位段地址),则使用DD伪指令,其中低字存放偏移地址,高字存放段地址。
?
。
当操作数为“?
”时,表示为变量预留空间而不赋初值。
nDUP(操作数,……)。
若要对某些数据重复多次,可以使用这种格式。
其功能是把()中的内容复制n次。
DUP可以嵌套。
例6.8画出以下数据定义伪指令定义的数据存储形式。
CRDB0DH
LFDB0AH
DATADW100,100H,-5
例画出以下数据定义伪指令定义的数据存储形式。
XDB12H,3DUP(0FFH)
YDB2DUP(10H,3DUP(‘AB‘,?
))
6.2.3其他伪指令
0.汇编地址计数器$
符号$:
当前地址
例:
X1DB‘Goodmorning!
’
CNTEQU$-X1
常利用$求某个变量的长度(字节数)
1.置汇编地址计数器伪指令ORG
语句格式:
ORG数值表达式
功能:
将汇编地址计数器设置成数值表达式的值。
例6.9指出下列程序段中变量BUF和NUM的偏移地址是多少?
ORG10;设置$的值为10
BUFDB‘ABCD’;变量BUF的偏移地址为10
ORG$+6;$的值增加6
NUMDW50;NUM的偏移地址为20
2.偶地址伪指令EVEN
偶地址伪指令EVEN的功能是把地址计数器调整为偶数。
在汇编数据定义语句或指令语句时,如地址计数器现行位置为奇数,则在汇编的目标代码中自动插入一条无操作指令NOP,如地址计数器已为偶数,那么汇编程序不作任何操作。
EVEN伪指令的使用格式为:
EVEN
3.INCLUDE伪指令
INCLUDE伪指令把指定的文件插入正在汇编的源程序中,作为源程序的一个组成部分。
INCLUDE伪指令的使用格式为:
INCLUDE源程序文件名
4.PUBLIC伪指令
PUBLIC伪指令用于定义全局符号,包括标号、FAR类型的过程名、变量名、常数名等。
PUBLIC伪指令的使用格式为:
PUBLIC符号1,符号2,……
5.EXTRN伪指令
EXTRN伪指令用于告诉汇编程序,本语句说明的这些符号没有在本程序模块中定义,是由其它程序模块定义的,且在定义模块中用PUBLIC伪指令说明。
EXTRN伪指令的使用格式为:
EXTRN符号1:
类型,符号2:
类型,……
6.TITLE伪指令
TITLE伪指令是给程序指定一个标题,以便在列表文件中每一页的第二行都显示这个标题文本。
TITLE伪指令使用格式为:
TITLE文本
6.3汇编语言程序结构
6.3.1汇编语言程序的一般结构
例6.10编程实现123+456→SUM单元的功能。
要求使用﹒EXE文件结构。
汇编源程序1:
STSGSEGMENTSTACK‘S’;行1
DW32DUP(?
);行2
STSGENDS;行3
DATASEGMENT;行4
ADW123;行5
BDW456;行6
SUMDW?
;行7
DATAENDS;行8。
CODESEGMENT;行9
MAINPROCFAR;行10
ASSUMECS:
CODE,DS:
DATA,SS:
STSG
;行11
PUSHDS;行12
XORAX,AX;行13
PUSHAX;行14
MOVAX,DATA;行15
MOVDS,AX;行16
MOVAX,A;行17
ADDAX,B;行18
MOVSUM,AX;行19
RET;行20
MAINENDP;行21
CODEENDS;行22
ENDMAIN;行23
1.段定义伪指令
语句格式:
段名SEGMENT[定位方式][组合方式][‘类别’]
...
段名ENDS
功能:
定义一个以SEGMENT伪指令开始,以ENDS伪指令结束,以“段名”命名的存储器段。
。
2.ASSUME伪指令
语句格式:
ASSUME段寄存器:
段名[,段寄存器:
段名...]
功能:
该语句一般出现在代码段中,且在段的开始出现,用来设定段寄存器与段之间的对应关系。
在程序中使用这条语句的话,宏汇编程序就将这些段作为当前可访问的段处理。
3.过程定义伪指令
语句格式:
过程名PROC属性
...
过程名ENDP
过程名是子程序入口的符号地址,可以是任意合法的字符串。
属性有近属性(NEAR)和远属性(FAR),段内调用的过程使用NEAR属性,段间调用的过程使用FAR属性。
过程是程序的一部分,通常也叫子程序。
一个过程可以被其它程序调用,它的最后一条语句总是返回指令。
过程调用和返回指令可用CALL和RET指令。
4.程序结束伪指令
语句格式:
END<表达式>
源程序结束伪指令是源程序的结束标志,汇编程序汇编到该伪指令结束,通常为源程序的最后一条语句。
其中表达式为可选项。
表达式必须为一存储器地址,该地址为程序的启动地址,即该程序在计算机上运行时第一条被执行指令的地址。
如果不带表达式,表明该程序模块不能单独运行,而作为子模块让其它程序调用。
6.3.2段寄存器的装填
初始化后,DS和ES并没有指向用户自己的数据区,而是指向PSP的段基址。
但在用户程序运行过程中,DS应指向用户程序自己的数据段以便访问其中的内容,例如上例中访问A、B和SUM变量。
同理,ES也应设置为正确的位置。
所以,编程人员应在程序中用指令为DS和ES寄存器赋值。
因为立即数不能直接传送段寄存器,所以用以下语句为DS赋值:
MOVAX,DATA
MOVDS,AX
如果程序中用到了附加段,也要在程序中用同样的方法为它们赋值。
6.3.3程序返回操作系统
1.利用PSP中的INT20H返回DOS
MAINPROCFAR
…
PUSHDS
XORAX,AX
PUSHAX
…
RET
MAINENDP
2.利用DOS的4CH系统功能调用返回DOS
目前返回DOS通常使用4CH系统功能调用,这种方法实现起来比较简单,可用以下语句实现:
MOVAH,4CH
INT21H
源程序2:
STSGSEGMENTSTACK‘S’
DW32DUP(?
)
STSGENDS
DATASEGMENT
ADW123
BDW456
SUMDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STSG
START:
MOVAX,DATA
MOVDS,AX
MOVAX,A
ADDAX,B
MOVSUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
第6章作业
P154
6.36.46.56.86.10
6.2*6.6*6.9*6.11*6.12*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 汇编语言 第六 笔记 整理