您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理汇编与接口技术第2章
1微机原理、汇编与接口技术2第二章汇编语言与汇编程序2.22.3符号指令中的表达式符号指令的寻址方式常用指令2.4伪指令2.12.5常用系统功能调用和BIOS3机器指令——用二进制编码形式下达的指示和命令。如:1100110100100001机器语言编写程序烦琐,难记忆,不易理解,易出错符号指令——由助记符、符号组成,它与机器指令一一对应。1100110100100001INT21H汇编——机器只能识别机器指令,所以需要将符号指令翻译成机器指令,翻译的过程称作汇编。汇编程序——完成汇编任务的程序。41EPUSHDS2BC0SUBAX,AX50PUSHAXB84D14MOVAX,144D8ED8MOVDS,AX汇编语言源程序汇编程序目标文件汇编语言源程序——用符号指令书写的程序。5学习要点正确定义各种符号,熟练使用地址表达式熟练掌握汇编语言的常用指令掌握符号指令的寻址方式汇编语言的格式6以字母开头的一串字符为了区别符号和数据,以字母开头的十六进制数,其前面要加一个前导0如:0FFH数据FFH符号符号汇编中的各种符号由伪指令定义,有常量、变量和标号三类2.1符号指令中的表达式7常用的有二进制数、十进制数、十六进制数和ASCII字符如:1010B,10,0AH,’A’,’$’,’ABC’1、常量—在汇编时已有确定数值的量ASCII字符做数值常量时,需加单引号2.1.1常量和数值表达式(1)数值常量8程序中为经常使用的数值取的名。用EQU或“=”伪指令定义,如:PEQU314P=314注:汇编时,汇编程序不给符号常量分配存储单元(2)符号常量2.1.1常量92、数值表达式数字表达式——由常量与运算符组成的有意义的式子,结果为一数值。在汇编语言源程序中,允许对常量进行以下三种类型的运算:(1)算术运算包括+,-,×,/,MOD(求余)(2)逻辑运算包括AND,OR,XOR,NOT(3)关系运算包括:EQ(=),NE(≠),LT(<),GT(>),LE(≤),GE(≥)2.1.1常量101、标号的三个属性(1)段地址—定义该标号所在段的段首址(2)偏移地址—标号所在段的段首址到该标号定义指令的字节距离(3)类型—NEAR和FAR两种NEAR—段内调用,FAR—段间调用标号→指令地址的符号表示2.1.2标号112.1.3标号2、标号的定义标号只在代码段中定义和使用,定义的方式有两种:(1)书写在符号指令前,用:定义,为NEAR类型,NEAR型标号只能在段内使用!例:CYCLE:MOVAL,[SI];定义近标号CYCLE(2)用PROC…ENDP伪指令定义过程名例:ABCPROCFAR;定义过程名ABC为FAR型标号ABCENDP12在汇编中都使用变量和地址表达式来表示存储器的地址。变量是存储器中的数据或数据区的符号表示。变量名是数据的地址或数据区的首地址。地址表达式由变量、标号、寄存器、常量和运算符组成。寄存器只能是16位的SI、DI、BX、BP和32位的通用寄存器,且寄存器必须位于[]中。2.1.3变量1.变量和地址表达式13(1)段地址—定义变量所在段的段首地址.由SEG算符指定如:SEGW;取变量W的段地址(2)偏移地址—变量所在段的段首址到该变量的字节距离.由OFFSET算符指定如:OFFSETW;取变量W的偏移地址2、变量的属性(3)类型—存取该变量中数据的字节数变量的类型有:字节(byte),字(word),双字(dword),四字(qword),十字节(tbyte),一个数据分别占1,2,4,8,10个字节单元14数据存放规律字节数据---一个字节单元存放字数据---二个字节单元存放双字数据---四个字节单元存放规定:1.“低对低,高对高”2.低位字节的地址为字的地址3、变量存储区中数据的存放15在数据段或附加数据段中用伪指令定义格式:[变量名]DB表达式[,……];定义字节变量[变量名]DW表达式[,……];定义字变量[变量名]DD表达式[,……];定义双字变量[变量名]DQ表达式[,……];定义四字变量[变量名]DT表达式[,……];定义十字节变量数据定义伪指令指明了变量的类型表达式确定了变量的初值4、变量的定义16(1)表达式为常量或数值表达式→存入数值如:W1DW1(2)表达式为ASCII字符串→存入ASCII值如:B1DW’AB’;用DW定义时,串长不可大于2B2DB’AB$’;用DB定义时,串长可大于2(3)表达式为重复子句格式:NDUP(表达式)如:B3DB2DUP(0)B4DB2DUP(5,’A’)4、变量的定义17(4)地址表达式(只适用DW、DD和DF3个伪指令)格式:[变量名]DW地址表达式;取其偏移地址来初;始化变量[变量名]DD地址表达式;取其偏移地址和段;地址来初始化其变量(5)由以上表达式组成的序列,之间用‘,’分隔B5DB1,2,3B6DB’1,2,3’;此行的,不是序列分隔符4、变量的定义18W1DWB2;用B2的偏移地址初始化W1变量B1DBAB$;变量B1用A、B、$的ASCII码初始化W2DW1994HDDDEW;用变量EW的高16位段基址和偏移地址初始DB2DB2DUP(-5,-1)DB1DUP(10,E);重复因子1不能省DB13,1,3在附加数据段DATA2中定义的变量如下:EQDB1234567890ABCDEFHEWDWAB,CD;用DW定义变量时,长度不超过2个字符例画出数据的存储形式19变量、标号以及由其组成的地址表达式均有类型属性.地址表达式的类型属性由其中的变量或标号(一个地址表达式不可能同时含有变量和标号)决定.不含变量或标号,仅含寄存器的地址表达式没有类型属性.在编程时往往需要临时改变原定义的变量、标号或地址表达式的类型属性,或者明确没有类型属性的地址表达式的类型.而仍保持它们原来的段地址和偏移地址属性不变.格式:类型PTR地址表达式如:BYTEPTR[BX+5]WORDPTRB25.地址表达式类型的变更20例:BDB3WDW1122HWORDPTRB;将B临时改变为字类型BYTEPTRW;将W临时改变为字节类型BYTEPTRB+1;例:BYTEPTRBX╳;寄存器有类型属性,不能变更BYTEPTR[BX]√2.1.4变量和标号类型的变更21第二章汇编语言与汇编程序2.12.3符号指令中的表达式符号指令的寻址方式常用指令2.4伪指令2.22.5常用系统功能调用和BIOS22符号指令的格式:操作助记符[目的操作数][,源操作数];注释操作助记符——指明指令进行什么操作目的操作数或源操作数指明用什么方式寻找操作的数据寻址方式——寻找操作数据存放位置(地址)的方式寻址方式可分为三大类:立即寻址:操作数就是操作数据寄存器寻址:操作数是寄存器名存储器寻址:操作数是地址表达式2.2符号指令中的寻址方式23操作数据在指定的寄存器中2.2.1寄存器寻址例:AX=2035H,BX=0178HMOVBX,AX;BX=AX=2035HADDAL,BL;AL=ADH,BL=78HAH,AL,BH,BL,CH,CL,DH,DL→8位通用寄存器AX,BX,CX,DX,SI,DI,BP,SP→16位通用寄存器EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP→32位通用寄存器传送指令助记符目的操作数源操作数24操作数即为操作数据,操作数据就在指令中立即寻址方式只能用于源操作数,主要用来给寄存器或存储器赋初值例:MOV5,AL╳立即数没有类型属性2.2.2立即寻址例:MOVAL,5;将字节05H送AL,AL=05HMOVAX,18;将字0012H送AX,AX=0012HMOVBL,-1;将字节FFH送BL,BL=0FFH25操作数据在存储器中,其偏移地址由指令直接给出(地址表达式中只有变量名和常量)2.2.3直接寻址地址表达式为:变量名或变量名+常量段地址默认在DS中例:MOVAX,W该指令的源操作数的地址为DS:OFFSETW26直接寻址常用已定义的变量表示例:W2DW-5,1994HMOVAX,W2;AX=FFFBHMOVBX,W2+2;BX=1994H区分立即寻址与直接寻址从变量中取数据属于直接寻址方式,注意与符号常量区别例:AAEQU10MOVAX,AA;立即寻址,AX=000AHMOVBX,AA+5;立即寻址,BX=000FH2.2.3直接寻址27若BX=0124H,MOVAX,BX;寄存器寻址,AX=0124HMOVCX,[BX];间接寻址,CX=1958H操作数为带方括号的寄存器:[SI],[DI],[BX],[BP],[EAX]…[ESP]寄存器的内容为操作数据的偏移地址2.2.4间接寻址28间接寻址只有一种形式[寄存器]间接寻址属于存储器寻址,寄存器内容为操作数据的偏移地址。寄存器寻址中,寄存器内容即为操作数据。只有SI,DI,BX,BP和32位的寄存器可用于间接寻址。例:MOVAX,[ECX]MOVAX,[CX]╳若用BP、EBP、ESP间址,约定段寄存器为SS;否则,约定段寄存器为DS。例:MOVAX,[BX];(DS:[BX])→AX例:MOVAX,[BP];(SS:[BP])→AX2.2.4间接寻址29操作数据在存储器中,其偏移地址为基址寄存器(BX或BP或32位的寄存器)的内容与变量的偏移地址、常量之和。地址表达式:[变量名+基址寄存器+常量]变量名[基址寄存器+常量]常量[基址寄存器+变量]地址表达式中可以没有变量或常量,不能没有基址寄存器例1:MOVBL,2[BX]或MOVBL,[BX+2];(DS:[BX+2])→BL例2:MOV6[BP],AX或MOV[BP+6],AX;AX→SS:[BP+6]段寄存器的确定,首先由变量确定;若无变量,则由寄存器确定,寄存器确定的原则同间址。2.2.5基址寻址302.2.5基址寻址例3:MOVAL,[BX+W1]或MOVAL,W1[BX]以BX的内容作基地址,变量W1的偏移地址为位移量或者以变量W1的偏移地址作基地址,BX的内容看作该变量数据区的位移量AL=19H312.2.6变址寻址操作数据在存储器中,其偏移地址为变址寄存器(SI、DI或32位的寄存器)的内容与变量的偏移地址、常量之和。例:MOVAX,2[SI]或MOVAX,[SI+2]执行的操作是(DS:[SI+2])→AX段寄存器的确定,首先由变量确定;若无变量,则由寄存器确定,寄存器确定的原则同间址。322.2.7基址变址寻址例:MOVAX,4[BX+DI]或MOVAX,[BX+DI+4];(DS:[BX+DI+4])→AX段寄存器的确定,首先由变量确定;若无变量,则由基址寄存器确定,基址寄存器确定的原则同间址。基址寄存器和变址寄存器的位数要相同。操作数据在存储器中,其偏移地址为指令中指定的基址寄存器和变址寄存器的内容与变量的偏移地址、常量之和。33例:W为一字变量,B为一字节变量,则:MOVAL,W[BX]╳MOVAL,BYTEPTRW[BX]√MOVAX,B[SI+5]╳MOVAX,WORDPTRB[SI+5]√在符号指令中的基址,变址,基址变址三种寻址中,其位移量可以是常数或符号常量,还可以是变量名。若是变量名,它给出变量所在段的偏移地址,其意义是取变量单元中的数据,所以其类型要与另一操作数的类型一致。34例:将立即数35H存入字节变量BUF+5单元中直接寻址:MOVBUF+5,35H间接寻址:MOVBX,OFFSETBUF+5MOVBYTEPTR[BX],35H基址寻址:MOVBX,5MOVBUF[BX],35H;常用间址、基址/变址访问一片连续的单元例:B1DB’AB$’MOVAL,B1[BX];AL=41HMOVAH,B1[BX+1];AH=42H352.2.8比例变址寻址例:MOVEBX,[ESI×4]注:比例因子可为且只可为1、2、4、8操作数据在存储器中,其偏移地址为指令中给出的含有变址寄存器×比例因子的地址表达式的偏移地址362.2.9基址比例变址寻址可将基址变址寻址看作是比
本文标题:微机原理汇编与接口技术第2章
链接地址:https://www.777doc.com/doc-4099036 .html