汇编语言基础伪指令.ppt

上传人:汽*** 文档编号:572429078 上传时间:2024-08-13 格式:PPT 页数:35 大小:1.15MB
返回 下载 相关 举报
汇编语言基础伪指令.ppt_第1页
第1页 / 共35页
汇编语言基础伪指令.ppt_第2页
第2页 / 共35页
汇编语言基础伪指令.ppt_第3页
第3页 / 共35页
汇编语言基础伪指令.ppt_第4页
第4页 / 共35页
汇编语言基础伪指令.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《汇编语言基础伪指令.ppt》由会员分享,可在线阅读,更多相关《汇编语言基础伪指令.ppt(35页珍藏版)》请在金锄头文库上搜索。

1、3.3 3.3 汇编语言基础汇编语言基础(P111)(P111)西安电子科技大学西安电子科技大学 冯育长冯育长 序言计算机语言发展简介 一常量及其数制二、汇编语言语句格式三、伪指令 *(重点难点)1硬 件机器语言汇编语言高级语言继 续 计算机语言发展简介计算机语言发展简介 2汇编语言与机器语言的关系汇编语言与机器语言的关系用汇编语言编写的程序称为汇编语言源程序汇编语言源程序MASM.EXE 系统软件系统软件汇编程序汇编程序汇编语言源程序汇编语言源程序. ASM机器语言机器语言目标程序目标程序汇编语言的两种语句类型汇编语言的两种语句类型1.CPU1.CPU指令指令 CPUCPU执行的语句,如执行

2、的语句,如 MOV ,ADD MOV ,ADD 等等 能够生成目标代码能够生成目标代码2.2.伪指令(指示性语句)伪指令(指示性语句)CPUCPU不不执执行行,而而由由汇汇编编程程序序执执行行的的语语句句,不不生生成成目目标标代码代码. .定义逻辑段、指示程序开始和结束等定义逻辑段、指示程序开始和结束等. . 7一、汇编语言的常量及其数制一、汇编语言的常量及其数制B B 二进制数二进制数D D(或缺省)或缺省) 十进制数十进制数H H 十十六六进制数进制数A A 单引号表示单引号表示ASCIIASCII码(字符串常量)码(字符串常量)用后缀表示常数的数制用后缀表示常数的数制等价如:如:MOV

3、ALMOV AL,0110 0100B0110 0100B MOV AL MOV AL,64H64H MOV AL MOV AL,100100 MOV ALMOV AL,1 1 ;(;(ALAL)=31H=31H MOV AL MOV AL,0ABH0ABH以以A AF F开头的数,加前导开头的数,加前导0 08允许使用一些简单的允许使用一些简单的常量常量表达式表达式等价如:MOV AL,3+5 MOV AL,16/2 MOV AL,8 9二、汇编语言语句格式二、汇编语言语句格式 标号:标号: 助记符助记符 操作数操作数,操作数,操作数 ;注释;注释 表示可选项表示可选项指令的符号地址,指令的

4、符号地址,标号后要有冒号标号后要有冒号注释前加分号注释前加分号根据不同的指令根据不同的指令可有可无,可多可少可有可无,可多可少操作码操作码不可缺省不可缺省1. CPU1. CPU指令语句格式指令语句格式:如如 L1:MOV AL,BL ;数据传送数据传送10标号由下列字符组成:标号由下列字符组成:1.AZ 或或 az 2. ? _ .3. 09 但但09不能作为第一个字符不能作为第一个字符L1:MOV AL,BL 字母数字串,字母数字串,大小写不分,大小写不分,不要用保留字不要用保留字合法的标号合法的标号L1:L21:NEXT:LOOP2:EXITagain:非法的标号非法的标号1L:21L:

5、$NEXT:LOOP:11 变量变量名名 助记符助记符 操作数操作数,操作数,操作数 ;注释;注释 变量的符号地址,变量的符号地址, 后无冒号后无冒号伪指令助记符伪指令助记符 不可缺省不可缺省2.2.伪指令语句格式伪指令语句格式:指示汇编程序要完成的操作。指示汇编程序要完成的操作。用来定义变量用来定义变量,分配存储单元分配存储单元,指示程序开始和结束等指示程序开始和结束等MASM.EXE1. CPU1. CPU指令语句格式指令语句格式:12三、三、伪指令伪指令CPUCPU不执行,而由汇编程序执行的语句不执行,而由汇编程序执行的语句指示汇编程序(指示汇编程序(MASM.EXEMASM.EXE)要

6、完成的操作。要完成的操作。用于定义变量、分配存储区、用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等定义逻辑段、指示程序开始和结束等131 1、定义段的伪指令、定义段的伪指令2 2、定义数据的伪指令、定义数据的伪指令 3 3、变量的属性及属性操作符、变量的属性及属性操作符4 4、定义字符串、定义字符串5 5、问号?及问号?及DUPDUP在在DBDB和和DWDW的应用的应用重点掌握:重点掌握:n伪指令的格式及实现的操作伪指令的格式及实现的操作n伪指令的应用伪指令的应用141 1、定义段的伪指令定义段的伪指令段名段名 SEGMENTSEGMENT 定位类型定位类型 组合类型组合类型 类别

7、类别 段名段名 ENDSENDS说明段的起始位置,说明段的起始位置,缺省缺省,则起始地址为,则起始地址为 0H0H(段的起始地址能被(段的起始地址能被16 16 整除)整除)说明不同模块中同名段的连接方式说明不同模块中同名段的连接方式缺省缺省,不组合(同名段在逻辑上相互独立),不组合(同名段在逻辑上相互独立)说明说明 段的段的结束结束类别类别相同者,相同者,组合时连续存放,组合时连续存放,不组合时不组合时应应缺省缺省152 2 、定义数据的伪指令、定义数据的伪指令n用于定义数据区中变量的类型用于定义数据区中变量的类型 DBDB 定义字节数据定义字节数据 DefinDefin Byte Byte

8、 n指令格式:指令格式: 变量名变量名 DBDB 数数11,数,数2 2 ;注释;注释 可省略可省略可选可选可有多个可有多个数据项数据项16定义数据段定义数据段DATADATA,其中包含其中包含3 3个变量个变量M M,N N和和SUMSUMDATA DATA SEGMENTSEGMENT M MDB 10HDB 10H N NDB 25HDB 25HSUMSUM DB 0DB 0DATA DATA ENDSENDS 例例1 1 由系统自动为段分配内存,由系统自动为段分配内存,且起始地址一定为且起始地址一定为0 0H HDATA DATA 是程序员指定的数据段段名;是程序员指定的数据段段名;

9、SEGMENT SEGMENT 段的定义伪指令段的定义伪指令段名可以是:段名可以是:DATA2 D1 D2 DATA2 D1 D2 等等定义字节变量定义字节变量ENDENDS S 数据段结束数据段结束 数据由此开始!数据由此开始!1FFFFH1FFFFH20000H20000H20001H20001H20002H20002H17定义数据段定义数据段DATADATA,其中包含其中包含3 3个变量个变量M M,N N和和SUMSUMDATA DATA SEGMENTSEGMENT M MDB 10HDB 10H N NDB 25HDB 25HSUMSUM DB 0DB 0DATA DATA END

10、SENDS 例例1 1 由系统自动为段分配内存由系统自动为段分配内存空间空间,且起始地址一定为且起始地址一定为0 0H HM10H10HN25H25HSUM00H00H 段的起始地址能被段的起始地址能被1616整除整除 每个段最大为每个段最大为64KB64KB 最小视需要而定最小视需要而定要点要点:18CODE CODE SEGMENTSEGMENT ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA STARTSTART:MOV AXMOV AX,DATADATA MOV DS MOV DS,AXAX MOV AL MOV AL,M M ADD AL ADD

11、AL,N N MOV SUM MOV SUM,ALAL CODE CODE ENDSENDS ENDEND STARTSTART 定义代码定义代码段段CODECODE,实现实现 M+NM+NSUMSUMDATA DATA SEGMENTSEGMENT M MDB 10HDB 10H N NDB 25HDB 25HSUMSUM DB 0DB 0DATA DATA ENDSENDS数据段由此开始 CODE CODE 是程序员指定的代码段段名;是程序员指定的代码段段名; SEGMENT SEGMENT 段的定义伪指令段的定义伪指令在代码段开头必须用在代码段开头必须用ASSUMEASSUME指定各段的

12、段寄存器指定各段的段寄存器: :CS CS 代码段段寄存器代码段段寄存器, ,DS DS 数据段段寄存器数据段段寄存器, ,ES ES 附加段段寄存器附加段段寄存器, ,SS SS 堆栈段段寄存器堆栈段段寄存器, ,注意语法格式注意语法格式 lENDENDS S 代码段结束代码段结束lEND END 源程序结束源程序结束l一般在一般在ENDEND之后是第一条指令的标号之后是第一条指令的标号l段名段名DATADATA代表数据段的段地址值,代表数据段的段地址值, 用户应完成用户应完成DSDS的初始化,方法固定。的初始化,方法固定。l变量名表征变量的偏移地址变量名表征变量的偏移地址l引用变量名访问变

13、量引用变量名访问变量直接寻址方式直接寻址方式19CODE CODE SEGMENTSEGMENT ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA STARTSTART:MOV AXMOV AX,DATADATA MOV DS MOV DS,AXAX MOV AL MOV AL,M M ADD AL ADD AL,N N MOV SUM MOV SUM,ALAL CODE CODE ENDSENDS ENDEND START START 定义代码定义代码段段CODECODE,实现实现 M+NM+NSUMSUMDATA DATA SEGMENTSEGMENT M

14、 MDB 10HDB 10H N NDB 25HDB 25HSUMSUM DB 0DB 0DATA DATA ENDSENDS数据段由此开始 CODE CODE SEGMENTSEGMENT ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA STARTSTART:MOV AXMOV AX,2000H2000H MOV DS MOV DS,AXAX MOV AL MOV AL,0000H0000H ADD AL ADD AL,0001H0001H MOV 0002H MOV 0002H,ALAL CODE CODE ENDSENDS ENDEND START S

15、TART 设已知地址如图设已知地址如图示,则等价于:示,则等价于:由于地址是由系统自动分配的,故:由于地址是由系统自动分配的,故:l一律用段名代表段地址值,一律用段名代表段地址值,完成完成DSDS的初始化的初始化l用变量名访问变量用变量名访问变量直接寻址方式直接寻址方式20CODE CODE SEGMENTSEGMENT ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA STARTSTART:MOV AXMOV AX,DATADATA MOV DS MOV DS,AXAX MOV AL MOV AL,M M ADD AL ADD AL,N N MOV SUM

16、MOV SUM,ALAL CODE CODE ENDSENDS ENDEND START START 定义代码定义代码段段CODECODE,实现实现 M+NM+NSUMSUMDATA DATA SEGMENTSEGMENT M MDB 10HDB 10H N NDB 25HDB 25HSUMSUM DB 0DB 0DATA DATA ENDSENDS请问请问:数据数据段由此开始段由此开始 代码段的起始地址代码段的起始地址? ? CS:IP CS:IP 会自动初始化会自动初始化2001H 2001H :0000H 0000H 2135H35H分析程序的运行结果?DATA DATA SEGMENT

17、SEGMENT M MDB 10HDB 10H N NDB 25HDB 25HSUMSUM DB 0DB 0DATA DATA ENDSENDSCODE CODE SEGMENTSEGMENT ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA STARTSTART:MOV AXMOV AX,DATADATA MOV DS MOV DS,AXAX MOV AL MOV AL,M M ADD AL ADD AL,N N MOV SUM MOV SUM,ALAL CODE CODE ENDSENDS ENDEND START START SUM=?SUM=?22 1

18、 1、定义段的伪指令、定义段的伪指令段名段名 SEGMENTSEGMENT 段名段名 ENDSENDS要点归纳要点归纳:n定义段的伪指令定义段的伪指令,n必须成对出现必须成对出现n必须有段名必须有段名ASSUME ASSUME CSCS:CODECODE,DSDS:DATADATA;用在代码段首行,指用在代码段首行,指定段寄存器定段寄存器n段的起始地址由系统自动安排段的起始地址由系统自动安排n段的起始地址能被段的起始地址能被1616整除整除 ( (段的段的起始地址一定为起始地址一定为0 0H H) )nCS:IP CS:IP 会自动初始化会自动初始化n用户应完成其它段用户应完成其它段寄存器和寄

19、存器和偏移地址偏移地址寄存器寄存器的初始化的初始化23 2 2、定义数据的伪指令、定义数据的伪指令DBDB 定义字节数据定义字节数据 DefinDefin Byte Byte归纳归纳:一般格式:一般格式:nDB DB 定义字节数据定义字节数据 D Definefin B Byte,yte,一个数据占一个数据占1 1个字节个字节nDW DW 定义字数据定义字数据 D Definefin W Wordord, 一个数据占一个数据占2 2个字节个字节nDD DD 定义双字数据定义双字数据 D Definefin D Double word,ouble word,一个数据占一个数据占4 4个字节个字节

20、nDQ 定义的数据为4字型(8字节)nDT 定义的数据为10字节型 变量名变量名 DBDB 数数11,数,数2 2, ;注释;注释 其它几个其它几个定义数据的伪指令定义数据的伪指令:24画出变量在内存中的存放示意图画出变量在内存中的存放示意图D1 D1 SEGMENTSEGMENT M1 M1 DB 1DB 1,2 2 M2 M2 DW 3456HDW 3456H,7 7D1 D1 ENDSENDS 例例2 2 M1M1不再关心段地址的不再关心段地址的具体数值具体数值0101M2M2020256H56H34H34H07H07H00H00Hl第一个变量的偏移地址一定是第一个变量的偏移地址一定是0

21、000H0000Hl其他数据按顺序分配内存其他数据按顺序分配内存25画出变量在内存中的存放示意图画出变量在内存中的存放示意图D1 D1 SEGMENTSEGMENT M1 M1 DB 1DB 1,2 2 M2 M2 DW 3456HDW 3456H,7 7D1 D1 ENDSENDS 例例2 2 M1M1不再关心段地址的不再关心段地址的具体数值具体数值0101M2M2020256H56H34H34H07H07H00H00H请问:变量请问:变量M1M1的字节长度的字节长度= =?2 2设设DSDS已初始化,写出指令把已初始化,写出指令把M1M1的第一个数据元素存入的第一个数据元素存入ALALMO

22、V AL,MOV AL,M1M1; ;直接寻址方式直接寻址方式写出指令把写出指令把M1M1的第二个数据元素存入的第二个数据元素存入BHBHMOV BH,MOV BH,M1+1M1+1 ; ;直接寻址直接寻址, ,M1+1M1+1 称为地址表达式称为地址表达式26画出变量在内存中的存放示意图画出变量在内存中的存放示意图D1 D1 SEGMENTSEGMENT M1 M1 DB 1DB 1,2 2 M2 M2 DW 3456HDW 3456H,7 7D1 D1 ENDSENDS 例例2 2 M1M1不再关心段地址的不再关心段地址的具体数值具体数值0101M2M2020256H56H34H34H07

23、H07H00H00H请问:变量请问:变量M2M2的字节长度的字节长度= =?4 4写出指令把写出指令把M2M2的第一个数据元素存入的第一个数据元素存入AXAXMOV AX,M2MOV AX,M2; ;直接寻址方式直接寻址方式写出指令把写出指令把M2M2的第二个数据元素存入的第二个数据元素存入BXBXMOV BX,M2+MOV BX,M2+2 2 ; ;直接寻址直接寻址,M2+,M2+2 2 称为地址表达式称为地址表达式27画出变量在内存中的存放示意图画出变量在内存中的存放示意图D1 D1 SEGMENTSEGMENT M1 M1 DB 1DB 1,2 2 M2 M2 DW 3456HDW 34

24、56H,7 7D1 D1 ENDSENDS M1M1不再关心段地址的不再关心段地址的具体数值具体数值0101M2M2020256H56H34H34H07H07H00H00H写出指令把写出指令把DLDL的中的数据存入的中的数据存入M1M1的首单元的首单元MOV M1,DLMOV M1,DL写出指令把写出指令把DXDX中的数据存入中的数据存入M2M2的首单元的首单元MOV M2MOV M2,DXDXDLDLDLDLDHDH28画出下列变量画出下列变量占用内存空间的示意图。占用内存空间的示意图。D1 D1 SEGMENTSEGMENT DATA_BYTE DATA_BYTE DBDB 10 10,1

25、0H,2*16,25510H,2*16,255 DATA_WORD DATA_WORD DWDW 100 100,250H250HD1 D1 ENDSENDS 课堂作业课堂作业1 129画出下列变量画出下列变量占用内存空间的示意图。占用内存空间的示意图。D1 D1 SEGMENTSEGMENT DATA_BYTE DATA_BYTE DBDB 10 10,10H,2*16,25510H,2*16,255 DATA_WORD DATA_WORD DWDW 100 100,250H250HD1 D1 ENDSENDS DATA_BYTEDATA_BYTE0AH0AH10H10H20H20HFFHF

26、FHDATA_WORDDATA_WORD64H64H00H00H50H50H02H02H课堂作业课堂作业1 130分析分析程序的功能程序的功能课堂作业课堂作业2 2DATA SEGMENTDATA SEGMENT X DB 5 X DB 5,1 1,6 6,3 3,4 4,5 5,6 6,0 0,8 8,9 9DATA ENDS DATA ENDS CODE SEGMENTCODE SEGMENTASSUME CSASSUME CS:CODECODE,DSDS:DATADATASTARTSTART:MOV AXMOV AX,DATADATAMOV DSMOV DS,AXAXMOV ALMOV

27、AL,0 0 MOV CXMOV CX,1010MOV BXMOV BX,0000H0000HL1L1: ADD ALADD AL,BX BX ;(;(ALAL)(ALAL)+ +(BXBX)INC BX INC BX ;(;(BXBX)(BXBX)+1+1DEC CXDEC CX ;(;(CXCX)(CXCX)-1-1JNZ L1JNZ L1;若(;若(CXCX)0 0则转向则转向L1L1HLT HLT ;暂停;暂停(ALAL)=X=X0 0+X+X1 1+ +X+ +X9 931数据段的段名为数据段的段名为D2,D2,该段中该段中字节变量字节变量VAR1VAR1中的数据为中的数据为 5 5

28、,1010,-2-2,1111。该段中该段中字变量字变量VAR2VAR2中的数据为中的数据为 5678H5678H,100100。请写出数据段的程序代码。请写出数据段的程序代码。D2 D2 SEGMENTSEGMENT VAR1 VAR1 DBDB 5,10,-2,11 5,10,-2,11 VAR2 DW 5678H,100 VAR2 DW 5678H,100D2 D2 ENDSENDS 课堂作业课堂作业3 3;或;或D2 D2 SEGMENTSEGMENT VAR1 VAR1 DBDB 5,10 5,10 DBDB -2,11 -2,11 VAR2 DW 5678H VAR2 DW 567

29、8H DW 100 DW 100D2 D2 ENDSENDS 32编程,把编程,把VAR1VAR1的第一个数据存入的第一个数据存入ALAL,把把VAR2VAR2的第一个数据存入的第一个数据存入BXBX。请写出代码段。请写出代码段。CODE CODE SEGMENTSEGMENT ASSUME CS:CODE,DS:D2ASSUME CS:CODE,DS:D2START:MOV AX,D2START:MOV AX,D2MOV DS,AXMOV DS,AXMOV AL,VAR1MOV AL,VAR1MOV BX,VAR2MOV BX,VAR2CODE CODE ENDS ENDS 课堂作业课堂作业

30、4 4D2 D2 SEGMENTSEGMENT VAR1 VAR1 DBDB 5,10,-2,11 5,10,-2,11 VAR2 DW 5678H,100 VAR2 DW 5678H,100D2 D2 ENDSENDS 请问:如果把此句去掉,请问:如果把此句去掉,执行执行 MOV AL,VAR1 MOV AL,VAR1 后后ALAL= = ? ?33第三章第三章 作业题作业题307307308308307.307.画出变量在内存中的存放示意图。画出变量在内存中的存放示意图。DATA SEGMENTDATA SEGMENTVAR1 DB 12VAR1 DB 12VAR2 DB -5VAR2 DB -5VAR3 DB 0VAR3 DB 0DATA ENDSDATA ENDS30308 8. .编程,把上题中编程,把上题中VAR1VAR1和和VAR2VAR2单元中的数据相加,结果单元中的数据相加,结果存入存入VAR3VAR3单元。单元。3435

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号