微机原理 汇编语言的学习课件

上传人:我*** 文档编号:145966812 上传时间:2020-09-25 格式:PPT 页数:95 大小:516KB
返回 下载 相关 举报
微机原理 汇编语言的学习课件_第1页
第1页 / 共95页
微机原理 汇编语言的学习课件_第2页
第2页 / 共95页
微机原理 汇编语言的学习课件_第3页
第3页 / 共95页
微机原理 汇编语言的学习课件_第4页
第4页 / 共95页
微机原理 汇编语言的学习课件_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《微机原理 汇编语言的学习课件》由会员分享,可在线阅读,更多相关《微机原理 汇编语言的学习课件(95页珍藏版)》请在金锄头文库上搜索。

1、1,微型计算机原理及应用,2,第三章 汇编语言程序设计,3,3.1 汇编语言基本元素,4,由汇编语言编写的源程序是由许多语句(也可称为汇编指令)组成的。每个语句由14个部分组成,其格式是: 标识符 指令助记符 操作数;注解,其中用方括号括起来的部分,可以有也可以没有。每部分之间用空格(至少一个)分开,一行最多可有132个字符。,3.1.1 汇编语言的语句格式,5,(1)标识符:给指令或某一存储单元地址所起的名字。 标识符由下列字符组成:(以字母或圆点开头) 字母: AZ, az; 数字: 09; 特殊字符: ? . _ $,数字不能作标识符的第一个字符,而. 仅能作标识符的第一个字符,标识符最

2、长为31个字符。,标识符后跟冒号时表示标号,代表该行指令的起始地址, 标号可以被转移、调用指令直接引用。 标识符后不带冒号时表示变量。 伪指令前的标识符不加冒号。,6,(2)指令助记符 表示不同操作的指令,可以是8086/8088的指令助记符,也可以是伪指令。,(3)操作数 是指令执行的对象。依指令的要求,可能有一个、两个、没有或者多个。 例如: RET ;无操作数 COUNT: INC CX ;一个操作数 MOV CX,DI ;两个操作数 ADD AX,BP十4 ;第二个操作数为表达式,(4)注释 该项可有可无,是为源程序所加的注解,用于提高程序的可读性。,7,汇编语言运算符:是汇编程序在汇

3、编时计算的,与运算指令不同,指令是在程序运行时计算的。 1、算术运算符、逻辑运算符、关系运算符 如:、 / 、 AND、OR、LT等 MOV AX, DI+BX ADD AX, FIRST+1 MOV AX, (choice LT 20) AND 5) OR (choice GE 20) AND 6 ),3.1.2 汇编语言运算符,8,注意: 算术运算符总可以用于数字操作,其结果也是数字的。当应用于存储器操作数时,只有+, -运算符有意义; 逻辑运算符的操作数也必须是数字,存储器操作数不能进行逻辑运算; 关系运算符连接的两个操作数,必须都是数字的或是在同一段内的存储器地址。,9,2、取值运算符

4、 1) $运算符 $:当前地址偏移量的值,BLOCK DB HELLO! NUM EQU $-BLOCK,;NUM为 6,10,SEG 和OFFSET SEG: 求标号或变量的段地址 OFFSET: 求标号或变量的偏移地址,例如,定义: SLOT DW 25 则:MOV AX,SLOT; 从SLOT地址中取一个字送入AX MOV AX,SEG SLOT; 将SLOT的段地址送入AX MOV AX,OFFSET SLOT; 将SLOT的段内偏移地址送AX,11,3) TYPE 返回标号或存储器操作数的类型值 对存储器操作数:表示占用的字节数 对标号:表示过程或指令地址的调用类型,表3-1 存储器

5、操作数的类型属性及返回值 字节 字 双字 NEAR FAR 1 2 4 1 2,12,4) LENGTH 和 SIZE(对用DUP定义数据的情况下),LENGTH: 返回一个与存储器操作数相联系的基本数据个数, SIZE: 返回一个为存储器操作数分配的字节数 关系:SIZE=LENGTH TYPE,例如:若 MULT-WORD DW 50 DUP(0) 则 LENGTH MULT-WORD=50 SIZE MULT-WORD=100 TYPE MULT-WORD=2,13,3、属性运算符,用来给指令中的操作数指定一个临时的属性,而暂时忽略操作数定义时的属性。,1) PTR 定义操作数为新的类型

6、,一般格式:类型 PTR 操作数,功能:建立一个存储器操作数,它与其后的存储器操作数有相同的段地址和偏移地址,但有不同的类型。,F2 DW 3456H MOV AL, BYTE PTR F2 MOV BX, 3 MOV BYTE PTR BX, 3,; AL: 56H,; 错,类型不明确,; 字节传输,14,3.1.3 表达式,是由运算符和操作数组成的序列,在汇编时产生一个确定的值。这个值可以仅表示一个常量,也可以表示一个存储单元的偏移地址,相应的表达式称为常量表达式和地址 表达式。,15,1、 常数,二进制(B),八进制(Q),十六进制(H),十进制(D)(默认),十进制浮点数,十六进制实数

7、,字符和字符串,100 01100100B 244Q 64H BD This is a classroom.,16,2、常量操作数,常量操作数是一个数值操作数,一般是常量或者是表示常量的标识符。 如:COUNT EQU 10 NAME=J,可以为数字常量操作数或字符串常量操作数。前者可采用二进制、八进制、十进制或十六进制等进位计数形式;而后者所对应的常量值为相应字符的ASCII码。,17,3、存储器操作数,存储器操作数是一个地址操作数,代表一个存储单元的地址,通常以标识符的形式出现。,变量:代表的是某个数据在数据段、附加段或堆栈段中的地址。变量所对应的存储单元内容在程序的运行过程中是可以改变的

8、。,标号:代表的是某条指令代码在代码段中的地址。标号通常作为转移指令或调用指令的目标操作数,在程序运行过程中不能改变。,18,存储器操作数有三个属性,段属性(SEG) : 所对应存储单元的段地址 偏移量属性(OFFSET) :所对于存储单元在所在段内的偏移地址(距段起点的字节数) 类型属性(TYPE) 变量的类型 是占用存储单元的字节数,分为: DB(1个字节) DW(2个字节) DD(4个字节) 标号的类型 则反映了相应存储单元地址在作为转移或调用指令的目标操作数时的寻址方式,可有两种情况,即NEAR和FAR。,19,DATA SEGMENT X DB 5, 4 Y DW 40H Z DD

9、2030H DATA ENDS,DS:0000H,X,Y,Z,X,Y,Z分别都有三个属性: 段地址,偏移地址和类型值, 这三个属性都有固定的值。,20,4、常量表达式,由常量操作数及运算符构成,在汇编时产生一个常量。 如PORT、VAL十1、 OFFSET SUM、 SEG SUM、TYPE CYCLE等。,21,5、地址表达式,由存储器操作数与运算符构成,但由存储器操作数构成地址表达式时,必须有明确的物理意义。,例如 SUM2、CYCLE5 表达式SUM2、CYCLE5的值仍然是一个存储器操作数,该存储器操作数的段地址与类型属性分别与存储器操作数SUM及CYCLE相同,但偏移地址分别比SUM

10、及CYCLE大2或小5。表达式是在汇编时计算的,而变量单元的内容在程序的运行过程中可以改变。,22,3.1.4 汇编语言程序汇编步骤,23,.ASM,.OBJ,.EXE,汇编,连接,宏汇编程序: MASM.EXE,连接程序: LINK.EXE,编辑程序,源程序,连接程序,汇编程序,目标程序,执行程序,步骤: 1)编写源程序;2)汇编;3)连接;4)调试。,24,用户编写程序,程序在计算机中运行,计算机的控制由操作系统交给用户程序,运行用户程序,当用户程序运行结束后,应再将控制权交回操作系统,所以,在程序中应该有返回DOS的操作。在计算机中,返回DOS的操作由操作系统中的一个子程序来实现,用户使

11、用时调用这个子程序即可。,25,每当一个用户的可执行文件.EXE装入内存后,存储器的分配情况如图:,00000H,DS,ES,100个字节,SS,用户程序空间,FFFFFH,CS,26,无论用户程序有几段,也无论这些段的排列顺序如何,用户程序的代码前一定有100个字节的程序段前缀(Program Segment Prefix, 简称PSP),PSP给出了用户的可执行文件(.EXE)的若干控制信息。其中PSP的开始处(第1,2字节)有一条中断指令INT 20H的代码,通过它可以结束用户程序,返回操作系统。在用户程序执行完以后,通过执行该条指令就可以返回DOS。,27,如何使用户程序执行完后返回来

12、执行这条指令?,DS,ES,SS,CS,首先将用户程序定义为一个远过程,当可执行文件装入内存后,DS,ES两个段寄存器被CPU自动设置为指向PSP的首址,所以一般程序的开始指令为: PUSH DS MOV AX, 0 PUSH AX 即将DS的内容和0000H压入堆栈,程序结束时的最后一条语句为RET,就把压入堆栈的PSP段的段地址和偏移地址0000H弹出并送入CS和IP,转而执行返回DOS的指令INT 20H。,堆栈情况,28,返回操作系统的另一个办法是通过系统调用(调用号是4CH)。这时, 在用户程序结束时,用下面两条指令: MOV AH, 4CH INT 21H 即可实现返回DOS。,2

13、9,3.2 伪指令,30,伪指令:伪指令不是CPU运行的指令,而是程序员给汇编程序下达的命令。是在汇编源程序期间由汇编程序执行的命令。,伪指令用来对汇编程序进行控制,对程序中的数据进行存储空间分配、实现条件汇编、列表等处理,其格式和汇编指令一样,但不产生目标代码,即不直接命令CPU去执行什么操作。,31,3.2.1 数据定义伪指令,DB:定义字节,其后的每个操作数占有一个存储单元,连续存放;,BUFFER DB 2, 3 STRING DB NO,DW:定义字,其后的每个操作数占有两个字节;,BUF DW 2, 3, 5,STRING,DD: 定义双字,其后每个操作数占4个字节;,还有DQ(4

14、个字长)、DT(10个字节长),32,若仅保留单元,不初始化,用?代替初值; 若数据重复,用 n DUP( )代替,n为重复次数。,ARRAY DB 100 DUP(?),保留100个字节,首地址为ARRAY,不初始化,即100个字节内均为随机值,DATA1 DB 100 DUP(AB),初始化200个字节,内有100个41H, 42H (即41H 42H 41H 42H 41H 42H),33,例:有如下数据定义伪指令: VAL DB 1,4 DUP (5, 2 DUP(FFH, 0 ) 则在VAL存储区前10个字节单元的数据是:,1,5,FFH,0,FFH,0,5,FFH,0,FFH,若定

15、义 DW 1, 2, 5 DUP(YES,2 DUP(3), 则在存储区的数据是什么?,34,3.2.2 符号定义伪指令,标识符 EQU 表达式,标识符 = 表达式,给标识符定义一个值或其他符号名或一条可执行语句,汇编时,凡是出现该标识符的地方就用定义的数据替代。,注意:用EQU赋值的名字不能重新赋值,需用PURGE释放后重新定义。如:PURGE TIMES TIMES EQU 100,TIMES EQU 50 BUF DB TIMES DUP(?),等效于:,BUF DB 50 DUP(?),BETA = TIMES-2 BETA = TIMES+5 ;重新赋值,35,DATA SEGMEN

16、T A DW 3 B DW 4 L EQU B-A DATA ENDS,DS:0000H,数据段,L为常量,不占空间,值为2,36,3.2.3 段定义伪指令SEGMENT和ENDS,一般的源程序分为4个段:代码段Code、数据段Data、堆栈段Stack、附加段Extra。 各个段从段定义语句开始,到段结束语句ENDS结束。,段名 SEGMENT 定位类型 组合类型 类别, 段体 ,段名 ENDS,用户指定,可任选定义,37,1)段名必须是合法的标识符。,2)定位类型: 表示本段起始地址位于何处,内存可以看成是一本书,将其分成页,段,字,和字节。 每256个地址为一页(PAGE),每页的起始地址为二进制: * * * 0000 0000 16进制:*00H,第一页 (256个地址),第二页 (256个地址),00000H,000FFH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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