[人力资源管理]第4章 宏汇编语言和程序设计1 011.ppt
《[人力资源管理]第4章 宏汇编语言和程序设计1 011.ppt》由会员分享,可在线阅读,更多相关《[人力资源管理]第4章 宏汇编语言和程序设计1 011.ppt(58页珍藏版)》请在三一办公上搜索。
1、2023年4月30日星期日,1,第4章 宏汇编语言和程序设计,4.1 宏汇编语言汇编语言源程序格式伪指令4.2 DOS调用4.3 程序设计顺序、分支、循环结构程序字符串操作程序子程序和宏指令,2023年4月30日星期日,2,4.1 宏汇编语言,4.1.5 汇编语言源程序格式4.1.3 伪指令语句4.1.2 运算符和表达式,2023年4月30日星期日,3,4.1.5 汇编语言源程序结构,一个汇编语言源程序应包含数据段、堆栈段和代码段;数据段可以没有,也可以有一个或两个;用一个时一般为DS段,可多扩展一个ES段;堆栈段可以直接定义,也可以使系统默认分配;代码段CS必须要有;源程序中的各逻辑段顺序可
2、以随意安排,但通常数据段在前,代码段在后;源程序形式有完整结构和简化结构两种;,课本P89具体伪指令格式在P8587,2023年4月30日星期日,4,完整源程序的一般结构(建议初学者先掌握该结构),DATA1 SEGMENT,DATA1 ENDS,CODE1 SEGMENT,CODE1 ENDS,ASSUME CS:CODE1,DS:DATA1,START:,MOV AX,DATA1MOV DS,AX,MOV AX,4C00HINT 21H,END START,;-;-,逻辑段的定义,段说明ASSUME,可添加堆栈段的定义,源程序结束伪指令END,段起始的标号,合法标识符即可,返回DOS的功能
3、调用,是所有汇编语言源程序的结束语句,只要有数据段,均需指令为段寄存器赋值,2023年4月30日星期日,5,段定义伪指令,格式 段名 SEGMENT;段体 段名 ENDS段名合法标识符,首尾段名要一致;段名作为操作数时,表示立即数,其值为段地址;段体数据段中主要为数据定义伪指令;代码段中主要为汇编指令。,详见课本P85定义格式,2023年4月30日星期日,6,段约定伪指令ASSUME,格式ASSUME 段寄存器名:段名,段寄存器名:段名,功能指明逻辑段和段寄存器的对应关系。并不会为段寄存器赋值,需要指令完成赋值;例如:段寄存器与逻辑段之间不一定是一一对应的关系。取消段指定ASSUME 段寄存器
4、名:NOTHING,详见课本P86定义格式,ASSUME CS:CODE1,DS:DATA1,ES:DATA2,DATA1,2023年4月30日星期日,7,关于堆栈段,堆栈段的定义:STACK1 SEGMENT STACK DW 256 DUP(?);分配256个字单元 STACK1 ENDS若源程序中无堆栈段定义,则系统会自动分配一个堆栈段,但连接时会产生一个警告信息:warning xxxx:no stack segment警告信息不影响程序正常运行。SS和SP的赋值可以指令完成,也可通过参数STACK自动设置。,2023年4月30日星期日,8,源程序结束伪指令,指令格式 END 地址指令
5、功能表示汇编语言源程序结束;可选的地址用于指出程序的起点,一般为标号或过程名表示的符号地址。,详见课本P87,2023年4月30日星期日,9,简化的源程序结构,.model small.stack.data.code.startup;-;-.exit 0end,MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AX,MOV AX,4C00HINT 21H,可添加子程序代码,存储模式,简化段定义伪指令,2023年4月30日星期日,10,存储模式说明,简化模式下,必须使用.MODEL伪指令指明存储模式;汇编程序根据该伪指令生成相应的ASSUME语句等;可选的存储模式TI
6、NY:COM文件使用;SMALL:一个数据段、一个代码段,只支持段内转移;COMPACT:多个数据段,一个代码段;MEDIUM:一个数据段,多个代码段,可以做段间转移;LARGE:多个数据段,多个代码段,必须64KB以下数组;HUGE:多个数据段,多个代码段,可用64KB以上数组;FLAT:80386以上的CPU模式下使用;,2023年4月30日星期日,11,简化段定义伪指令,简化段段名.CODE:代码段,其后是汇编指令;.DATA:数据段,其后是变量定义伪指令;.STACK 堆栈字节数:堆栈段,缺省1024字节;.STARTUP用于代码段的开始,可自动初始化段寄存器;.EXIT用于结束程序的
7、运行;,2023年4月30日星期日,12,处理器选择伪指令,缺省方式下,汇编程序只处理16位系统的指令;使用32位系统指令,需要在源程序开始指明处理器类型;.8086:默认类型;.286、.286P、.386、.386P、.486、.486P、.586、.586P、.686、.686PP表示可使用特权指令;一个源程序中可混合使用多种处理器选择伪指令。,2023年4月30日星期日,13,4.1.3 伪指令语句,伪指令是构成汇编语言指令系统的一部分;指示性语句,为汇编程序提供一些辅助信息;类型变量定义:定义数据变量;程序指示:安排程序中的数据存放位置;段定义:程序中使用到的逻辑段的说明;特点没有对
8、应的机器指令;由汇编程序在翻译汇编语言源程序的时候执行。,2023年4月30日星期日,14,2023年4月30日星期日,14,1、常量定义伪指令,赋值伪指令EQU格式:EQU功能:用指定标识符来代替表达式值或符号;表达式可以是数值,也可以字符或字符串、指令助记符等;例如:DATA EQU 2 MOVE EQU MOV注意:该语句仅为标识符来赋值,并不会分配存储空间;汇编程序会将源程序中的标识符替换成对应的数值;在同一程序中,EQU语句对一个符号名只能定义一次。,2023年4月30日星期日,15,等号伪指令,格式=功能定义标识符,来代替表达式的值;与EQU语句的区别:只能定义数值;在同一程序中可
9、对一个符号名重复定义;,2023年4月30日星期日,16,2、变量定义伪指令,指令格式变量名 助记符 操作数;注释变量名合法的标识符,可作为符号地址,可选项;助记符必选项,指示所定义变量的类型;操作数必选项,可有1多个操作数;若具有1个以上操作数,需使用逗号“,”分隔;,2023年4月30日星期日,17,助记符,助记符用于确定操作数的类型;每个操作数在内存中存放所占的字节数;常用的助记符DB(字节)、DW(字)、DD(双字)其他助记符DF(三字)、DQ(四字)、DT(十字节),2023年4月30日星期日,18,操作数类型,可以定义数值;立即数、已定义的常量、表达式;字符、字符串;可以只分配存储
10、空间,而不赋具体的数值;使用通配符“?”可以定义一段连续的存储空间;使用DUP子句,2023年4月30日星期日,19,变量定义伪指令举例1常数和表达式,例1.变量定义伪指令的操作数是数值时,均以二进制补码形式在内存中保存。设常量定义为:NUM EQU 100变量定义伪指令如下:A1 DB 10 A2 DW NUM,100H,-1 A3 DD 4*8内存分配情况如右:,A1,A2,A3,10,100,100H,-1,4*8=32=20H,0A,6400,0001,FFFF,20000000,2023年4月30日星期日,20,变量定义伪指令举例2 字符、字符串,例2.操作数是字符或字符串时,以AS
11、CII码的形式存放。STR1 DB A,BSTR2 DW ABSTR3 DD BASTR4 DB ABCD,STR1,STR2,STR3,STR4,*一般,在定义字符串时,经常使用DB来定义,以使字符按存放顺序。,41,42,4241,41,42,41,42,43,44,00,00,2023年4月30日星期日,21,变量定义伪指令举例3 只分配存储空间,例3.若在汇编期间只需要为变量分配存储空间,而不赋初值,则可以使用“?”作为操作数。BUF1 DB 5,6,?BUF2 DW 100H,?,BUF1,BUF2,05,06,-,0001,-,2023年4月30日星期日,22,DUP复制说明符重复
12、次数n DUP(OPRD1、OPRD2、)该说明符可嵌套使用;例4.操作数若使用DUP复制说明符,则表示定义重复数据,分配连续的存储空间。DATA1 DB 100 DUP(0)DATA2 DB 3 DUP(3 DUP(2),7),变量定义伪指令举例4 分配连续的存储空间,DATA1,100个,DATA2,2023年4月30日星期日,23,变量定义伪指令练习,请写出下列变量定义伪指令的内存分配情况。DATA1 DB 01H,A,123,BCDDB1,2 DUP(2,3)DATA2 DW 0AB1CH,?,0DW 20,14H,-1DATA3 DD 234H,?,DATA1,DATA2,DATA3
13、,课本P84例4-5、4-6、4-7、4-8,2023年4月30日星期日,24,3、定位伪指令ORG,格式:ORG 功能:将其后的数据或指令从“数值表达式”所指定的位置开始存放。例:,ORG 100H X1 DW 23H DB 23H ORG 200H X2 DB ABC,0DH,0AH X3 DB?,23,X1,00,23,X2,41,42,43,0D,0A,X3,2023年4月30日星期日,25,4.1.2 运算符与表达式,1、运算符数值运算符算术运算符、逻辑运算符、关系运算符属性运算符段属性SEG、偏移属性OFFSET、类型属性TYPE长度属性LENGTHOF、容量属性SIZEOF属性修
14、改运算符强制类型PTR、别名定义THIS、标号强制SHORT(第5章)分离运算符HIGH、LOW,2023年4月30日星期日,26,算术运算符,运算符类型+(正号)、-(负号)+(加)、-(减)、*(乘)、/(除)、MOD(取模)、(数组索引)(数组索引)严格来说,应该是地址表达式;算术运算符与立即数、常量、括号等构成数值表达式。变量不能参与算术运算。例如:120+(321-90)mod 3 322*5/32,=120+231 mod 3,=120+0=120=78H,=1610/32=50=32H,2023年4月30日星期日,27,逻辑运算符,运算符类型AND(与)、OR(或)、NOT(非)
15、、XOR(异或)SHL(左移)、SHR(右移)逻辑运算符可与立即数、常量、括号等构成数值表达式。变量不能参与逻辑运算。例如:1 SHL 3 47H AND 0FH NOT 56H,=08H,=07H,=0A9H,2023年4月30日星期日,28,关系运算符,运算符类型EQ(等于)、NE(不等)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)关系运算符可与立即数、常量、括号等构成数值表达式。变量不能参与关系运算。关系运算只能有0(假)和-1(真)两个返回值。返回值以二进制补码形式表示,位数由目的操作数决定;例如:MOV AX,120 LT 100H MOV AL,21 EQ 21
16、H,(AX)=0FFFFH,(AL)=0,2023年4月30日星期日,29,属性操作符,属性操作符是面向变量或标号的;属性操作符的类型返回值型:获取变量或标号的相关属性返回值;强制转换型:强制改变变量或标号的相关属性;变量和标号是在数据定义和程序中设置的标识符;变量:表示数据的地址B1 DB 12H标号:表示指令的地址LOOP1:MOV AX,BX,2023年4月30日星期日,30,段属性操作符 SEG,格式:SEG 功能返回标识符所在段的段地址;例如:MOV AX,SEG NEXTMOV BX,SEG DATA若存储器如右所示,则以上指令执行后(AX)=1000H,(BX)=2000H,NE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人力资源管理 人力资源管理第4章 宏汇编语言和程序设计1 011 人力资源 管理 汇编语言 程序设计
链接地址:https://www.31ppt.com/p-4603651.html