new04第四章汇编程序设计基础(自学).ppt
《new04第四章汇编程序设计基础(自学).ppt》由会员分享,可在线阅读,更多相关《new04第四章汇编程序设计基础(自学).ppt(91页珍藏版)》请在三一办公上搜索。
1、【本章主要内容】,汇编语言基础 汇编语言程序结构框架 汇编语言程序设计方法 汇编程序的开发过程,第4章汇编程序设计基础(自学),4.1 汇编语言基础,第4章汇编程序设计基础,4.1.1 概述,汇编语言是一种面向机器结构的低级程序设计语言,汇编语言程序是将机器指令组成的机器语言程序“符号化”,它同机器语言的目标代码一一对应。汇编语设计程序设计能充分发挥机器硬件的性能,提高计算机的运行效率,汇编语言比机器语言易于辨认、维护和修改。,第4章汇编程序设计基础,4.1.2 汇编语言语句种类与格式,指令语句 每条指令语句经编译后都要产生一条可执行的目标代码(机器指令),所以这种语句属于可执行语句。,例如:
2、MOV AX,32H AND BX,01010111B,第4章汇编程序设计基础,伪指令语句 指示汇编程序如何编译源程序,伪指令不产生目标代码。,例如:ORG 100H,宏指令语句 用户定义的新指令,用于替代源程序中一段有独立功能的程序。,第4章汇编程序设计基础,1.语句格式,标号:指令助记符 操作数;注释,指令的符号地址,指明该指令的功能,若有多个操作数用“,”隔开,起说明作用的字符串,第4章汇编程序设计基础,标号的命名规则:,字符个数为131个。,第一个字符不能是数字,可以使用字母或点号.、$、?和下划线_;从第二个字符开始,可以是字符、数字和特殊字符。,不能与系统专用的保留字相同,第4章汇
3、编程序设计基础,4.1.3 汇编语言数据和表达式,1.常量,数值常量 例如:25D、80H、101001B、45,字符串常量 例如:2、A、”Computer”,第4章汇编程序设计基础,符号常量 用一个符号来代表常。,1)等值伪指令EQU,格式:符号 EQU 表达式,例如:S1 EQU ABCD N EQU 12 NUM EQU 23+25+N ADR1 EQU DS:BP+14H,第4章汇编程序设计基础,2)等号伪指令=,格式:符号=表达式,例如:NUM=10H,伪指令(EQU)和伪指令(=)的区别是:在同一源程序中,同一符号不能用EQU伪指令重新定义,“=”可以。,第4章汇编程序设计基础,
4、2.变量,变量是指存放在存储单元中的数据,这些数据在程序运行过程中可以改变。,(1)数据定义伪指令,可选,是分配的存储单元的符号地址,按字节(DB)、字(DW)和双字(DD)分配内存单元,设定变量的初值,第4章汇编程序设计基础,1)数值表达式 VARB1 DB 10H VARB2 DB 20H,30H,40H VARW DW 1122H,3344H,上述变量的存储单元分配及初始化情况如右图所示。,第4章汇编程序设计基础,2)字符串表达式 STR1 DB ABCD STR2 DW AB,C,上述变量的存储单元分配及初始化情况如右图所示。,第4章汇编程序设计基础,3)“?”表达式 STR1 DB?
5、,?,4)DUP表达式,在连续的存储单元中重复定义一组数据。,例如:NUM1 DB 20H DUP(5)NUM2 DW 10H DUP(?),第4章汇编程序设计基础,4.运算符与表达式,(1)算术运算符 参见下表。,第4章汇编程序设计基础,第4章汇编程序设计基础,(2)逻辑运算符,第4章汇编程序设计基础,(3)关系运算符,第4章汇编程序设计基础,(4)数值返回运算符,1)SEG和OFFSET运算符 SEG:取变量或标号所在段的段基值;OFFSET:取变量名或标号所在段内的偏移量。,例如:MOV AX,SEG VAR1 MOV SI,OFFSET VAR3,第4章汇编程序设计基础,(5)属性运算
6、符,1)PTR运算符 格式:类型 PTR 地址表达式,第4章汇编程序设计基础,源程序的基本结构框架,8086/8088汇编程序采用分段结构,一个完整的源程序可以包含多个逻辑段,但当前段最多只能有4个:数据段、堆栈段、附加段和代码段。,4.2.1 段定义,段名 SEGMENT 定位类型 组合类型 类别名 段名 ENDS,第4章汇编程序设计基础,例如:Data1 Segment DB?,10H V1 DB 20H Data1 Ends,第4章汇编程序设计基础,4.2.2 段寻址伪指令(ASSUME),段寻址伪指令用来建立段与段寄存器之间的联系。,格式:ASSUME 段寄存器名:段名,段寄存器名:段
7、名,,例如:,第4章汇编程序设计基础,DATA1SEGMENT;定义段DATA1 VAR1 DB 12HDATA1ENDS;DATA1段定义结束DATA2SEGMENT;定义段DATA2 VAR2 DB 34HDATA2ENDS;DATA2段定义结束CODE SEGMENT VAR3 DB 56H ASSUME CS:CODE,DS:DATA1,第4章汇编程序设计基础,4.2.3 END伪指令,格式:END 地址表达式,4.2.4 段寄存器的装入,1.DS和ES的装入,在指令中直接引用段名时,得到的是这个段的段基值,这个段基值是16位的立即数。,第4章汇编程序设计基础,例如:CODE SEGM
8、ENT ASSUME CS:CODE,DS:DATA1,ES:DATA2START:MOV AX,DATA1;设置DS MOV DS,AX MOV AX,DATA2;设置ES MOV ES,AX,第4章汇编程序设计基础,2.SS的装入,(1)自动装入,Stack1 Segment Para Stack Dw 20H dup(?)Stack1 Ends,code Segment Assume code:CS,Stack1:SS,第4章汇编程序设计基础,(2)执行程序装入,Stack1 Segment Dw 20H dup(?)Stack1 Ends,code Segment Assume cod
9、e:CS,Stack1:SS Mov AX,Stack1 Mov SS,AX,第4章汇编程序设计基础,2.CS的装入,CS和IP控制程序的执行流程。装载目标代码时自动将CS和IP初始化为程序将要执行的第一条指令的段基值和偏移量,它们由END伪指令提供。如果END伪指令没有指定地址表达式,则源程序中第一条指令语句的地址作为程序执行的起始地址。,基本框架,STATCKSEGMENT STACK;定义堆栈段.STACKENDSDATASEGMENT;定义数据段DATAENDSCODESEGMENT;定义代码段ASSUME CS:CODE,DS:DATA,SS:STATCK;仅告诉汇编程序,并不能赋值
10、START:MOV AX,DATAMOV DS,AX.MOV AH,4CH;程序结束 返回DOSINT 21HCODEENDSEND START,(X+125-X*Y)/Z,STATCKSEGMENT STACK DW 100H DUP(?)STACKENDSDATSEGMENTX DW 3Y DW 4Z DW 10DATENDSCODSEGMENTASSUME CS:COD,DS:DAT,SS:STACKSTART:MOV AX,DATMOV DS,AXMOV AX,XIMUL YMOV CX,AXMOV BX,DXMOV AX,XADD AX,125CWD,SUB AX,CXSBB DX,
11、BXIDIV ZMOV X,AXMOV Y,DXMOV AH,4CHINT 21HCOD ENDSEND START,第4章汇编程序设计基础,1、返回DOS系统的方式,Mov AH,4CH Int 21H,2、从键盘接收一串字符,MOV AH,0AHINT 21H;DS:DX:缓冲区可接收的字符 缓冲区,4.3 系统功能调用,第4章汇编程序设计基础,3、显示一个字符,MOV DL,41H;A的ASCII MOV AH,2 INT 21H,4、从键盘接收一串字符,MOV AH,0AHINT 21H;DS:DX:缓冲区可接收的字符 缓冲区,第4章汇编程序设计基础,4.3 其它伪指令,过程定义伪指令
12、,格式:过程名 PROC NEAR/FAR Ret 过程名 ENDP,第4章汇编程序设计基础,ORG伪指令,格式:ORG 数值表达式 将表达式的值赋给当前位置计数器,符号“$”就代表当前位置计数器。例:,第4章汇编程序设计基础,DATA SEGMENT;定义段DATA ORG 30H VAB1 DB 12H,34H ORG$+20H STR DB STRING DATA ENDS,第4章汇编程序设计基础,4.4 汇编程序设计方法 概述,1.程序设计步骤,(1)分析问题,确定算法,(2)绘制程序流程图,(3)编写程序,(4)调试程序,第4章汇编程序设计基础,顺序程序的设计,例 4-1 试编制程序
13、,计算:Z=(3X+Y-5)/2 其中 X=15H Y=10H,DATA Segment;数据段 X DW 15H Y DW 10H Z DW?DATA Ends,第4章汇编程序设计基础,CODE Segment;代码段 Assume CS:CODE,DS:DATAStart:Mov AX,DATA Mov DS,AX;初始化DS Mov AX,X Shl AX,1;AX2X Add AX,X;AX3X,第4章汇编程序设计基础,Add AX,Y;AX3X+Y Sub AX,5;AX3X+Y-5 Sar AX,1;AX(3X+Y-5)/2 Mov Z,AX;存放结果 Mov AH,4CH Int
14、 21H;返回DOSCODE Ends End Start,第4章汇编程序设计基础,4.4.3 分支程序设计,在汇编语言中分支程序主要是通过转移指令来实现。,1.转移指令,(1)无条件转移指令,功能:无条件转移到“目标地址”处执行。,指令格式:JMP 目标地址,例如:jmp Label1 jmp BX,第4章汇编程序设计基础,(2)条件转移指令,功能:条件成立时转移到“目标地址”处执行。,指令格式:JXX 目标地址,XX为1-3个字母表示的转移条件,说明:条件转移指令只能在段内转移,转移范围只能在-128127之间。,条件:S SF(符号标志)C CF(进位标志),第4章汇编程序设计基础,Z
15、ZF(零标志)N NOT A Above L Less E Equal G-Great,例如:JZ Lab1 JNZ Lab2,第4章汇编程序设计基础,2.分支程序的设计,条件,Y,N,条件,图4.4-3 分支程序结构形式,第4章汇编程序设计基础,1条件转移指令实现分支程序,例2 编制程序,把DA1字节单元中数据变成偶数。,TEST DA1,01H JZ NEXT;是偶数,转移 INC DA1;是奇数,加1NEXT:,第4章汇编程序设计基础,例3 设X、Y为带符号的字节变量,编程实现下面的公式。,CMP X,0;比较X与0进行比较JGE BIGER;X0,转移到BIGERMOV Y,-1;X0
16、,Y置-1JMP NEXT,第4章汇编程序设计基础,BIGER:JZ EQUL;X=0,转移EQUL MOV Y,1;X0,Y置1 JMP NEXTEQUL:MOV Y,0;Y置0NEXT:,第4章汇编程序设计基础,2用跳转表实现多路分支 对于多分支结构通常采用跳转表来实现。,例4 现有若干个程序段,每个程序段的入口地址分别是Sub1、Sub2、Subn,试编制一程序,根据指定的参数转入相应的程序段。,DATA SEGMENT;定义数据段JUMP_TABLE DW SUB1,SUB2,SUB3 DW SUB4,SUB5 PARAM DB 3DATA ENDS;数据段结束,第4章汇编程序设计基础
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- new04 第四 汇编程序 设计 基础 自学
链接地址:https://www.31ppt.com/p-5441333.html