收藏 分享(赏)

汇编语言基础伪指令.ppt

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

1、1,3.3 汇编语言基础(P111),西安电子科技大学 冯育长,序言计算机语言发展简介 一常量及其数制 二、汇编语言语句格式 三、伪指令 *(重点难点),2,硬 件,机器语言,汇编语言,高级语言,继 续,计算机语言发展简介,3,返 回,硬件是所有数字系统的基础 没有软件的硬件系统毫无意义 诺依曼原理:程序存储+程序控制,4,机器语言: 用二进制代码表示的一种语言。如,8086/8088的的机器代码B034H 代表 (AL)34H 优点:机器语言是机器唯一能识别的语言,是人机之间的接口界面。执行速度最快,执行效率最高。 缺点:可读性差,表达的意义不直观,编写、阅读、调试较困难。面向机器每一种微处

2、理器都有自己的机器语言,不能通用,返 回,5,汇编语言: 是一种符号语言,使用助记符表示相应的操作如,8086/8088的机器代码B034H写成汇编语言MOV AL,34H;(AL)34H 比机器语言更易于为人们所理解,可读性强。 与机器语言一一对应,是面向机器的语言 必须遵循一定的语法规则。(如指令的书写格式等) 可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。 70%以上的系统软件是用汇编语言编写的。,返 回,6,高级语言: 面向人的语言,与机器无关BASICPASCALC/C+JAVA 便于阅读,易学易用,不涉及硬件,具有通用性。 但目标代码冗长,占用内存多

3、,从而执行时间长,效率不高 不能直接对某些硬件进行操作。 经常与汇编语言配合使用,应用十分广泛。,返 回,7,汇编语言与机器语言的关系,用汇编语言编写的程序称为汇编语言源程序,MASM.EXE 系统软件,汇编程序,汇编语言源程序 . ASM,机器语言 目标程序,汇编语言的两种语句类型,1.CPU指令CPU执行的语句,如 MOV ,ADD 等能够生成目标代码 2.伪指令(指示性语句) CPU不执行,而由汇编程序执行的语句,不生成目标代码. 定义逻辑段、指示程序开始和结束等.,8,一、汇编语言的常量及其数制,B 二进制数 D(或缺省) 十进制数 H 十六进制数 A 单引号表示ASCII码(字符串常

4、量),用后缀表示常数的数制,等价,如:MOV AL,0110 0100BMOV AL,64HMOV AL,100MOV AL,1 ;(AL)=31HMOV AL,0ABH,以AF开头的数,加前导0,9,允许使用一些简单的常量表达式,等价,如:MOV AL,3+5MOV AL,16/2MOV AL,8,10,二、汇编语言语句格式,表示可选项 指令的符号地址,标号后要有冒号,注释前加分号,根据不同的指令 可有可无,可多可少,操作码 不可缺省,1. CPU指令语句格式:,如 L1:MOV AL,BL ;数据传送,11,标号由下列字符组成: AZ 或 az ? _ .09 但09不能作为第一个字符,L

5、1:MOV AL,BL,字母数字串, 大小写不分, 不要用保留字,合法的标号 L1: L21: NEXT: LOOP2: EXIT again:,非法的标号 1L: 21L: $NEXT: LOOP:,12,变量名 助记符 操作数,操作数 ;注释,变量的符号地址, 后无冒号,伪指令助记符 不可缺省,2.伪指令语句格式:,指示汇编程序要完成的操作。 用来定义变量,分配存储单元, 指示程序开始和结束等,MASM.EXE,1. CPU指令语句格式:,13,三、伪指令,CPU不执行,而由汇编程序执行的语句,指示汇编程序(MASM.EXE)要完成的操作。 用于定义变量、分配存储区、 定义逻辑段、指示程序

6、开始和结束等,14,1、定义段的伪指令 2、定义数据的伪指令 3、变量的属性及属性操作符 4、定义字符串 5、问号?及DUP在DB和DW的应用,重点掌握: 伪指令的格式及实现的操作 伪指令的应用,15,1、定义段的伪指令,段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS,说明段的起始位置, 缺省,则起始地址为0H (段的起始地址能被16 整除),说明不同模块中同名段的连接方式 缺省,不组合(同名段在逻辑上相互独立),说明 段的结束,类别相同者, 组合时连续存放, 不组合时应缺省,16,2 、定义数据的伪指令,用于定义数据区中变量的类型 DB 定义字节数据 Defin Byte 指

7、令格式:变量名 DB 数1,数2 ;注释,可省略,可选,可有多个数据项,17,定义数据段DATA, 其中包含3个变量M,N和SUM,DATA SEGMENTM DB 10HN DB 25H SUM DB 0 DATA ENDS,例1,由系统自动为段分配内存, 且起始地址一定为0H,DATA 是程序员指定的数据段段名; SEGMENT 段的定义伪指令 段名可以是:DATA2 D1 D2 等,定义字节变量,ENDS 数据段结束,数据由此开始!,1FFFFH,20000H,20001H,20002H,18,定义数据段DATA, 其中包含3个变量M,N和SUM,DATA SEGMENTM DB 10H

8、N DB 25H SUM DB 0 DATA ENDS,例1,由系统自动为段分配内存空间, 且起始地址一定为0H,M,10H,N,25H,SUM,00H,段的起始地址能被16整除每个段最大为64KB最小视需要而定,要点:,19,CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL,MADD AL,NMOV SUM,AL CODE ENDSEND START,定义代码段CODE, 实现 M+NSUM,DATA SEGMENTM DB 10HN DB 25H SUM DB 0 DATA ENDS,数据段由此开始,CO

9、DE 是程序员指定的代码段段名; SEGMENT 段的定义伪指令,在代码段开头必须用 ASSUME指定各段的段寄存器: CS 代码段段寄存器, DS 数据段段寄存器, ES 附加段段寄存器, SS 堆栈段段寄存器, 注意语法格式,ENDS 代码段结束 END 源程序结束 一般在END之后是第一条指令的标号,段名DATA代表数据段的段地址值,用户应完成DS的初始化,方法固定。,变量名表征变量的偏移地址 引用变量名访问变量直接寻址方式,20,CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL,MADD AL,NMO

10、V SUM,AL CODE ENDSEND START,定义代码段CODE, 实现 M+NSUM,DATA SEGMENTM DB 10HN DB 25H SUM DB 0 DATA ENDS,数据段由此开始,CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,2000HMOV DS,AXMOV AL,0000HADD AL,0001HMOV 0002H,AL CODE ENDSEND START,设已知地址如图示,则等价于:,由于地址是由系统自动分配的,故: 一律用段名代表段地址值,完成DS的初始化 用变量名访问变量直接寻址方式,21,CODE S

11、EGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL,MADD AL,NMOV SUM,AL CODE ENDSEND START,定义代码段CODE, 实现 M+NSUM,DATA SEGMENTM DB 10HN DB 25H SUM DB 0 DATA ENDS,请问:,数据段由此开始,代码段的起始地址?,CS:IP 会自动初始化 2001H :0000H,22,35H,分析程序的运行结果?,DATA SEGMENTM DB 10HN DB 25H SUM DB 0 DATA ENDS,CODE SEGMENTASSU

12、ME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL,MADD AL,NMOV SUM,AL CODE ENDSEND START,SUM=?,23,1、定义段的伪指令,段名 SEGMENT 段名 ENDS,要点归纳:,定义段的伪指令, 必须成对出现 必须有段名,ASSUME CS:CODE,DS:DATA,;用在代码段首行,指定段寄存器,段的起始地址由系统自动安排 段的起始地址能被16整除(段的起始地址一定为0H) CS:IP 会自动初始化 用户应完成其它段寄存器和偏移地址寄存器的初始化,24,2、定义数据的伪指令,DB 定义字节数据 Def

13、in Byte,归纳:,一般格式:,DB 定义字节数据 Defin Byte,一个数据占1个字节 DW 定义字数据 Defin Word, 一个数据占2个字节 DD 定义双字数据 Defin Double word,一个数据占4个字节 DQ 定义的数据为4字型(8字节) DT 定义的数据为10字节型,变量名 DB 数1,数2, ;注释,其它几个定义数据的伪指令:,25,画出变量在内存中的存放示意图,D1 SEGMENTM1 DB 1,2M2 DW 3456H,7 D1 ENDS,例2,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,第一个变量的偏移地址一定是0

14、000H 其他数据按顺序分配内存,26,画出变量在内存中的存放示意图,D1 SEGMENTM1 DB 1,2M2 DW 3456H,7 D1 ENDS,例2,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,请问:变量M1的字节长度=?,2,设DS已初始化,写出指令把M1的第一个数据元素存入AL,MOV AL,M1,;直接寻址方式,写出指令把M1的第二个数据元素存入BH,MOV BH,M1+1,;直接寻址,M1+1 称为地址表达式,27,画出变量在内存中的存放示意图,D1 SEGMENTM1 DB 1,2M2 DW 3456H,7 D1 ENDS,例2,M1,不

15、再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,请问:变量M2的字节长度=?,4,写出指令把M2的第一个数据元素存入AX,MOV AX,M2,;直接寻址方式,写出指令把M2的第二个数据元素存入BX,MOV BX,M2+2,;直接寻址,M2+2 称为地址表达式,28,画出变量在内存中的存放示意图,D1 SEGMENTM1 DB 1,2M2 DW 3456H,7 D1 ENDS,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,写出指令把DL的中的数据存入M1的首单元,MOV M1,DL,写出指令把DX中的数据存入M2的首单元,MOV M2

16、,DX,DL,DL,DH,29,画出下列变量 占用内存空间的示意图。,D1 SEGMENTDATA_BYTE DB 10,10H,2*16,255DATA_WORD DW 100,250H D1 ENDS,课堂作业1,30,画出下列变量 占用内存空间的示意图。,D1 SEGMENTDATA_BYTE DB 10,10H,2*16,255DATA_WORD DW 100,250H D1 ENDS,DATA_BYTE,0AH,10H,20H,FFH,DATA_WORD,64H,00H,50H,02H,课堂作业1,31,分析程序的功能,课堂作业2,DATA SEGMENTX DB 5,1,6,3,4

17、,5,6,0,8,9 DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL,0 MOV CX,10MOV BX,0000H L1: ADD AL,BX ;(AL)(AL)+(BX)INC BX ;(BX)(BX)+1DEC CX ;(CX)(CX)-1JNZ L1;若(CX)0则转向L1HLT ;暂停,(AL)=X0+X1+ +X9,32,数据段的段名为D2, 该段中字节变量VAR1中的数据为 5,10,-2,11。 该段中字变量VAR2中的数据为 5678H,100。 请写出数据段的程序代码

18、。,D2 SEGMENTVAR1 DB 5,10,-2,11VAR2 DW 5678H,100 D2 ENDS,课堂作业3,;或 D2 SEGMENTVAR1 DB 5,10DB -2,11VAR2 DW 5678HDW 100 D2 ENDS,33,编程,把VAR1的第一个数据存入AL, 把VAR2的第一个数据存入BX。 请写出代码段。,CODE SEGMENTASSUME CS:CODE,DS:D2 START:MOV AX,D2MOV DS,AXMOV AL,VAR1MOV BX,VAR2 CODE ENDS,课堂作业4,D2 SEGMENTVAR1 DB 5,10,-2,11VAR2 DW 5678H,100 D2 ENDS,请问:如果把此句去掉, 执行 MOV AL,VAR1 后 AL= ?,34,第三章 作业题307308 307.画出变量在内存中的存放示意图。 DATA SEGMENT VAR1 DB 12 VAR2 DB -5 VAR3 DB 0 DATA ENDS 308.编程,把上题中VAR1和VAR2单元中的数据相加,结果存入VAR3单元。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报