计算机原理与汇编汇编语言基础.ppt
《计算机原理与汇编汇编语言基础.ppt》由会员分享,可在线阅读,更多相关《计算机原理与汇编汇编语言基础.ppt(76页珍藏版)》请在三一办公上搜索。
1、汇编语言概述,一、概述1.高级语言与汇编语言比较,高级语言:语句变量说明/定义int y,a=25,b=3,c=76;给变量赋值y=2(a+b)-c,汇编语言:指令分配寄存器分配存储单元数据传递,2.汇编程序结构数据段堆栈段代码段,;设置数据段DATA SEGMENTADB25;数据ABDB3;数据BCDB76;数据CYDB?;存放结果DATAENDS;设置堆栈段STACK1 SEGMENTPARA STACKDW 20HDUP(0)STACK1ENDS,示例:,y=2(a+b)-c,;设置代码段COSEGSEGMENTASSUME CS:COSEG,DS:DATA,SS:STACK1STAR
2、T:MOV AX,DATA;装填段寄存器DSMOV DS,AXMOV AL,A;取数据AADD AL,B;计算(A+B)SALAL,1;计算 2(A+B)SUBAL,C;计算 2(A+B)-CMOVY,AL;存结果MOVAH,4CH;结束用户程序,返回操作系统INT21HCOSEGENDSENDSTART,示例:,汇编语言:是汇编格式指令,伪指令的集合及其表示,使用这些指令的一组规则。机器语言:用二进制编码的机器指令的集合及一组使用规则,它是CPU能直接识别的唯一语言。MOV DS,AX 汇编语言 8E D8 机器语言(目标代码),汇编语言与机器语言,汇编语言与目标代码的对应,与机器语言相关效
3、率高编写源程序繁琐调试困难,汇编语言特点,(1)程序执行占用较短的时间,或者占用较小存储容量的场合。(2)程序与计算机硬件密切相关,程序直接控制硬件的场合。(3)需提高大型软件性能的场合。(4)没有合适的高级语言的场合。,汇编语言的主要应用场合:,二、汇编语言语句种类,语句种类 指令语句:又叫可执行语句,在汇编时产生一个目标代码,对应机器的一种操作。伪指令语句:又叫命令语句。用于指示汇编程序如何汇编源程序,没有目标代码与之对应。宏指令语句:由用户自定义的指令。(指令的扩展),格式:名字 操作符 操作数;注释指令语句:标号:助记符 操作数,操作数;注释伪指令语句:名字 定义符 参数,.,参数;注
4、释命名规则:可以用?,_,数字和英文字符。名字的第一个字符不能是数字。名字的长度不受限制,但只有前31个字符有效。不允许用保留字作名字(指令,伪指令,寄存器名等)。,二、汇编语言语句格式,指令语句:标号:助记符 操作数,操作数;注释,1标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:”。2指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。“MOV”3操作数:操作数表示指令助记符的操作对象。4注释:注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。,伪指令语句:名字 定义符 参数,.,参数;注释,1名字(符号名):伪指令
5、语句的一个可选项,空格表示结束,不得使用冒号。2定义符(伪指令符):指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGMENT,假定伪指令ASSUME等。3参数(操作数):伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。4注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。,三、符号定义语句,1.等值语句格式:符号 EQU 表达式 表达式:常数或数值表达式 地址表达式 变量或标号CONST EQU 10ADR1 EQU DS:BP+14HADR2 EQU CONST+10COUN E
6、QU VAR 同一符号不能用EQU重新定义。汇编时,作为替代符号用,不产生目标代码,不占用存储单元。,2.等号语句格式:符号=表达式 CONT=5 NUM=10H NUM=NUM+20H表达式形式同上,但可多次重新定义同一符号。,三、符号定义语句,例:DATASEGMENTDA1DB9AHDA2DW5678HDA3DD12345678HDATAENDS,变量的属性:段属性SEG偏移属性OFFSET类型属性TYPE,四、数据定义语句,格式:变量名 DB/DW/DD 表达式1,表达式2,.保留存储空间,并可以完成数据的初始化。,格式:变量名 DB/DW/DD 表达式1,表达式2,.表达式:(1)数
7、值(2)字符/字符串(3)?表达式:分配相应数量的存储单元,但不初始化。(4)带DUP的表达式:使用重复数据操作符DUP,能方便地定义连续的存储单元。格式:变量名 DB/DW/DD 表达式1,DUP(表达式2)次数 内容操作符DUP可以嵌套使用:DA_B3 DB 10H DUP(4 DUP(3),8),四、数据定义语句,DA_BYTE1DB50HDA_BYTE2DB10H,20H,30H,40HDA_WORD1DW0A34HDA_WORD2DW1234H,5678H,9ABCHDA_DWORDDD12345678H,9ABCDEFH,数值表达式,STRING1DBSTRINGSTRING2DW
8、ST,RI,NGSTRING3DDST,RI,NG,字符串表达式,DA_BYTE3 DB?,?DA_WORD3 DW?,?,?表达式,DA_B1DB10HDUP(?)DA_B2DB20HDUP(ABCD)DA_W1DW10DUP(4)DA_W2DW10DUP(-1,1),带DUP表达式,格式:变量名 DB/DW/DD 表达式1,DUP(表达式2)操作符DUP可以嵌套使用DB 10H DUP(4 DUP(3),8);3,3,3,3,8重复10H次,次数,内容,数据类型,字节BYTE1字WORD2双字DWORD4四字QWORD8十字节TBYTE10,DBDWDDDQDT,1.常数数值常数:二、八、
9、十、十六进制 B,O,D,H字符串常数2.变量 用数据定义语句定义并预置初值后,变量代表存储单元的数据,并作为该单元的符号地址。变量引用:(1)在指令语句的操作数字段中,引用的变量名作为地址表达式的组成部分之一。地址表达式的值:存放操作数的存储单元偏移量。地址表达式的类型:同变量名的类型。(2)在用DW或DD的数据定义语句中,若操作数字段引用了变量名,则在分配的存储单元中,预置被引用的变量名的地址部分 偏移量(DW;DD,前两个字节)段基值(DD,后两个字节),五、汇编语言数据与运算符,3.标号:一条指令的符号地址。段属性 偏移属性 类型属性 NEAR/FAR 类型属性设置:(1)隐含方式:N
10、EXT:MOV AX,3000(2)用LABEL伪指令设置类型属性:标号伪指令LABEL格式:名字 LABEL 类型 与指令语句配合使用:名字(新标号)LABEL 类型(NEAR/FAR)SUB1_FAR LABEL FAR SUB1:MOV AX,1234H 与数据定义语句配合使用:名字(新变量名)LABEL 类型(BYTE/WORD/DWORD)DATA _BYTE LABEL BYTE DATA _WORD DW 20H DUP(563H),运算符,+*/MODSHRSHL,运算格式,运算功能,+表达式表达式表达式1+表达式2表达式1 表达式2表达式1*表达式2表达式1/表达式2表达式1
11、 MOD 表达式2表达式1 SHR 次数表达式1 SHL 次数,正数(单项运算符)负数(单项运算符)加法减法乘法除法(取商)模除(取余数)右移左移,(1)算术运算符,4.运算符,只有减法运算可以用同一段内的两个变量相减,SHR、SHL不能对某寄存器或存储单元内容进行移位运算。,示例NUM=11011011BDATA1DWNUMSHL 3,NUM SHR 2.MOVAX,NUM SHL 3MOVBX,NUM SHR 2MOVCX,NUM SHL 8MOVCX,NUM SHL 16MOVDX,NUM SHR 8MOVDX,NUM SHR 16DATA1DW6D8H,36H.MOVBX,001101
12、10BMOVCX,0MOVDX,0MOVDX,0,算术运算符,移位运算符不能对寄存器或存储单元进行移位运算MOV AX,CX SHL 5MOV DX,DATA1 SHR 3,逻辑运算符只能对一个具体数据进行逻辑运算,不能对一个寄存器操作数或存储器操作数进行逻辑运算。,示例MOVAL,NOT0F0HMOVDX,NOT0F0HMOVBL,55H OR0F0HANDBH,55H AND 0F0HXORCX,55H XOR 50H,MOVAL,0FHMOVDX,0FF0FHMOVBL,0F5HANDBH,50HXORCX,5,全1为真,全0为假比较时,若为常数按无符号数比较;如果是变量,按偏移量比较,
13、示例DATASEGMENTORG 10HNUM1=1234NUM2=1234HDA_BYTEDB10HDUP(0)DA_WORDDW10HDUP(0)DA_VAR1DWNUM2+DA_BYTEGTNUM1+DA_WORDDA_VAR2DBNUM1 LE NUM2DATAENDS.MOVAX,NUM1 LT NUM2MOVBL,NUM1 GE NUM2MOV CX,DA_WORD GT DA_BYTE.,.DA_VAR1DW0FFFFHDA_VAR2DB0FFH.MOVAX,0FFFFHMOVBL,0MOV CX,0FFFFH.,可以对两个常数进行比较,不能用常数与偏移量进行比较,格式:运算对象
14、是存储器操作数,由变量名或标号组成地址表达式SEG:返回变量所在的段值OFFSET:返回变量所在偏移TYPE:返回变量的类型LENGTH:返回数组变量的元素个数SIZE:返回数组变量所占的总字节数 SIZE=TYPE*LENGTH,(4)数值返回运算符,示例 假设DATA的段基址是7A4EHDATASEGMENTORG30HDA1DB20HDUP(12H)DA2DWDA1.DATAENDS.MOVAX,SEGDA1MOVBX,SEGDA2MOVSI,OFFSETDA1MOVCX,DA2MOVDI,OFFSETDA2MOVDX,OFFSET DA1+4,MOVAX,7A4EHMOVBX,7A4E
15、HMOVSI,30HMOVCX,DA2MOVDI,50HMOVDX,34H,用数字形式表示变量和标号的类型属性,示例DA_BYTE DB 12HDA_WORD DW 3456HDA_DWORDDD789AH.MOVAL,TYPEDA_BYTEMOVBL,TYPE DA_WORDMOVCL,TYPE DA_DWORD.MOVAL,1MOVBL,2MOVCL,4,LENGTH与SIZE运算符,LENGTH运算符返回数组变量的元素个数如果变量用DUP定义,Length为外层DUP的值如果没有DUP定义,结果为1SIZE运算符数组变量所占的总字节数SIZE是LENGTH和TYPE的乘积,示例DATAS
16、EGMENTVAR1DB10HDUP(0)VAR2DB10H,20H,30H,40HVAR3DW10HDUP(A,4 DUP(3)VAR4DBCOMPUTER.DATAENDS.MOVAL,LENGTHVAR1;MOVAH,SIZEVAR1;MOVBL,LENGTHVAR2;MOVBH,SIZEVAR2;MOVCL,LENGTHVAR3;MOVCH,SIZEVAR3;MOVDL,LENGTHVAR4;MOVDH,SIZEVAR4;,(AL)=10H(AH)=10H(BL)=1(BH)=1(CL)=10H(CH)=20H(DL)=1(DH)=1,例:求数组ARRAY的各数据项的累加和,从数组最后
17、一个数据项开始进行累加。ARRAYDW20HDUP(4).XORAX,AXMOVSI,OFFSET ARRAYADDSI,SIZE ARRAY-TYPE ARRAYMOVCX,LENGTH ARRAYLOP:ADDAX,SISUBSI,TYPE ARRAYLOOP LOP,(5)属性运算符PTR:类型 PTR 地址表达式类型可以是:BYTE,WORD,DWORD 或NEAR FAR仅在当前语句中有效,是一种临时设置。DA_BYTE DB 20H DUP(0)DA_WORD DW 10H DUP(0)MOV WORD PTR DA_BYTE 10,AXADD BYTE PTR DA_WORD D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 原理 汇编 汇编语言 基础
链接地址:https://www.31ppt.com/p-6023472.html