第4章-MASM汇编语言知识课件

上传人:仙*** 文档编号:241612699 上传时间:2024-07-09 格式:PPT 页数:57 大小:1.61MB
返回 下载 相关 举报
第4章-MASM汇编语言知识课件_第1页
第1页 / 共57页
第4章-MASM汇编语言知识课件_第2页
第2页 / 共57页
第4章-MASM汇编语言知识课件_第3页
第3页 / 共57页
点击查看更多>>
资源描述
09 七月 20241第第4章章 MASM汇编语言知识汇编语言知识4.3 伪指令伪指令4.2 汇编语句表达式汇编语句表达式自学本节的详细内容自学本节的详细内容4.4 DOS功能调用和功能调用和BIOS功能调用功能调用09 七月 202424.3 伪指令伪指令1、伪指令语句、伪指令语句2、汇编语言源程序格式、汇编语言源程序格式09 七月 202431、伪指令语句、伪指令语句伪指令是构成汇编语言指令系统的一部分;伪指令是构成汇编语言指令系统的一部分;指示性语句指示性语句,为汇编程序提供一些辅助信息;,为汇编程序提供一些辅助信息;类型类型变量定义:定义数据变量;变量定义:定义数据变量;程序指示:安排程序中的数据存放位置;程序指示:安排程序中的数据存放位置;段定义:程序中使用到的逻辑段的说明;段定义:程序中使用到的逻辑段的说明;特点特点没有对应的机器指令没有对应的机器指令;由汇编程序在翻译汇编语言源程序的时候执行。由汇编程序在翻译汇编语言源程序的时候执行。09 七月 202444.3.1 变量定义伪指令变量定义伪指令伪指令格式伪指令格式变量名变量名 助记符助记符 操作数操作数 ;注释注释变量名变量名合法的标识符合法的标识符,可作为符号地址,可选项;,可作为符号地址,可选项;助记符助记符必选项,指示所定义变量的类型;必选项,指示所定义变量的类型;操作数操作数必选项,可有必选项,可有1多个操作数;多个操作数;若具有若具有1个以上操作数,需使用逗号个以上操作数,需使用逗号“,”分隔;分隔;09 七月 20245助记符助记符助记符用于确定操作数的类型;助记符用于确定操作数的类型;每个操作数每个操作数在内存中存放所占的在内存中存放所占的字节数字节数;常用的助记符常用的助记符DB(字节)、(字节)、DW(字)、(字)、DD(双字)(双字)其他助记符其他助记符DF(三字)、(三字)、DQ(四字)、(四字)、DT(十字节)(十字节)09 七月 20246变量定义伪指令的操作数类型变量定义伪指令的操作数类型可以定义数值;可以定义数值;立即数、已定义的立即数、已定义的常量常量、表达式表达式;字符、字符串字符、字符串;可以可以只分配存储空间只分配存储空间,而不赋具体的数值;,而不赋具体的数值;使用通配符使用通配符“?”可以定义一段可以定义一段连续的存储空间连续的存储空间;使用使用DUP子句子句09 七月 20247变量定义伪指令举例变量定义伪指令举例1常数和表达式常数和表达式例例1.变量定义伪指令的操作数是数值时,均变量定义伪指令的操作数是数值时,均以以二进制补码二进制补码形式形式在内存中保存。在内存中保存。设常量定义为:设常量定义为:NUM EQU 100变量定义伪指令如下:变量定义伪指令如下:A1 DB 10 A2 DW NUM,100H,-1 A3 DD 4*8A1A2A310100100H-14*8=32=20H0A64000001FFFF2000000009 七月 20248变量定义伪指令举例变量定义伪指令举例2 字符、字符串字符、字符串例例2.操作数是字符或字符串时,一般使用操作数是字符或字符串时,一般使用DB来定义来定义,以,以ASCII码码的形式存放。的形式存放。STR1 DB A,BSTR2 DW ABSTR3 DD BASTR4 DB ABCDSTR1STR2STR3STR441424241414241424344000009 七月 20249变量定义伪指令举例变量定义伪指令举例3 只分配存储空间只分配存储空间例例3.若在汇编期间只需要为变量分配存储空若在汇编期间只需要为变量分配存储空间,而不赋初值,则可以使用间,而不赋初值,则可以使用“?”作作为操作数。为操作数。BUF1 DB 5,6,?BUF2 DW 100H,?BUF1BUF20506-0001-09 七月 202410DUP复制说明符复制说明符重复次数重复次数n DUP(OPRD1,OPRD2,)该说明符可嵌套使用;该说明符可嵌套使用;例例4.操作数若使用操作数若使用DUP复制说明符,则表示定义重复数据,分复制说明符,则表示定义重复数据,分配连续的存储空间。配连续的存储空间。DATA1 DB 100 DUP(0)DATA2 DB 3 DUP(3 DUP(2),7)变量定义伪指令举例变量定义伪指令举例4 分配连续的存储空间分配连续的存储空间000000DATA1100个个020202070202020702020207DATA209 七月 202411变量定义伪指令练习变量定义伪指令练习请写出下列变量定义伪指令的内存分配情况。请写出下列变量定义伪指令的内存分配情况。DATA1 DB 01H,A,123,BCDDB1,2 DUP(2,3)DATA2 DW 0AB1CH,?,0DW 20,14H,-1DATA3 DD 234H,?01413132334243440102030203DATA11CAB-000014001400FFFFDATA234020000-DATA309 七月 20241209 七月 2024124.3.2 常量定义伪指令常量定义伪指令赋值伪指令赋值伪指令EQU格式:格式:EQU功能:用指定标识符来代替表达式值或符号;功能:用指定标识符来代替表达式值或符号;n表达式可以是数值,也可以字符或字符串、指令助记符等;表达式可以是数值,也可以字符或字符串、指令助记符等;例如:例如:DATA EQU 2 MOVE EQU MOV注意:注意:该语句该语句仅为标识符来赋值仅为标识符来赋值,并不会分配存储空间;,并不会分配存储空间;汇编程序会将源程序中的标识符替换成对应的数值;汇编程序会将源程序中的标识符替换成对应的数值;在同一程序中,在同一程序中,EQUEQU语句对一个符号名语句对一个符号名只能定义一次只能定义一次。09 七月 202413等号伪指令等号伪指令格式格式=功能功能定义标识符,来代替表达式的值;定义标识符,来代替表达式的值;与与EQU语句的区别:语句的区别:只能定义数值;只能定义数值;在同一程序中可对一个符号名重复定义;在同一程序中可对一个符号名重复定义;09 七月 2024144.3.5 定位伪指令定位伪指令ORG格式:格式:ORG 功能:功能:将其后的数据或指令从将其后的数据或指令从“数值表达数值表达式式”所指定的位置开始存放。所指定的位置开始存放。例:例:X1 DW 23H DB 23H X2 DB ABC,0DH,0AH X3 DB?100H101H102H200H201H202H203H204H205H 23X10023X24142430D0AX3ORG 100HORG 200H09 七月 2024154.3.7 MASM汇编语言源程序结构汇编语言源程序结构一个汇编语言源程序应包含一个汇编语言源程序应包含数据段、堆栈段数据段、堆栈段和和代码段代码段;数据段可以没有,也可以有一个或两个;数据段可以没有,也可以有一个或两个;n用一个时一般为用一个时一般为DS段,可多扩展一个段,可多扩展一个ES段;段;堆栈段可以直接定义,也可以使系统默认分配;堆栈段可以直接定义,也可以使系统默认分配;代码段代码段CS必须要有;必须要有;源程序中的各逻辑段顺序可以随意安排,但通常数据段在前,源程序中的各逻辑段顺序可以随意安排,但通常数据段在前,代码段在后;代码段在后;源程序形式有源程序形式有完整结构完整结构和和简化结构简化结构两种;两种;09 七月 202416完整源程序的一般结构完整源程序的一般结构(建议初学者先掌握该结构建议初学者先掌握该结构)DATA1 SEGMENTDATA1 ENDS CODE1 SEGMENTCODE1 ENDSASSUME CS:CODE1,DS:DATA1START:MOV AX,DATA1MOV DS,AXMOV AX,4C00HINT 21HEND START;-;-逻辑段的定义逻辑段的定义段说明段说明ASSUMEASSUME可添加可添加堆栈段堆栈段的定义的定义源程序结束伪指令源程序结束伪指令ENDEND段起始的标号,段起始的标号,合法标识符即可合法标识符即可返回返回DOS的功能调用,的功能调用,是所有汇编语言源程是所有汇编语言源程序的结束语句序的结束语句只要有数据段,均需只要有数据段,均需指令为段寄存器赋值指令为段寄存器赋值09 七月 202417段定义伪指令段定义伪指令格式格式 段名段名 SEGMENT ;段体段体 段名段名 ENDS段名段名合法标识符,合法标识符,首尾段名要一致首尾段名要一致;段名作为操作数时,表示段名作为操作数时,表示立即数立即数,其值为,其值为段地址段地址;段体段体数据段中主要为数据段中主要为数据定义伪指令数据定义伪指令;代码段中主要为代码段中主要为汇编指令汇编指令。详见课本详见课本P87定义格式定义格式09 七月 202418段约定伪指令段约定伪指令ASSUME格式格式ASSUME 段寄存器名段寄存器名:段名段名,段寄存器名段寄存器名:段名段名,功能功能指明逻辑段和段寄存器的对应关系。指明逻辑段和段寄存器的对应关系。n并不会为段寄存器赋值,需要指令完成赋值;并不会为段寄存器赋值,需要指令完成赋值;例如:例如:段寄存器与逻辑段之间段寄存器与逻辑段之间不一定不一定是一一对应的关系。是一一对应的关系。取消段指定取消段指定ASSUME 段寄存器名段寄存器名:NOTHING详见课本详见课本P89定义格式定义格式ASSUME CS:CODE1,DS:DATA1,ES:DATA2DATA109 七月 202419关于堆栈段关于堆栈段堆栈段的定义:堆栈段的定义:STACK1 SEGMENT STACK DW 256 DUP(?);分配分配256个字单元个字单元 STACK1 ENDS若源程序中无堆栈段定义,则系统会自动分配一个堆栈段,但若源程序中无堆栈段定义,则系统会自动分配一个堆栈段,但连接时会产生一个警告信息:连接时会产生一个警告信息:warning xxxx:no stack segment警告信息不影响程序正常运行。警告信息不影响程序正常运行。SS和和SP的赋值可以指令完成,也可通过参数的赋值可以指令完成,也可通过参数STACK自动设置。自动设置。09 七月 202420源程序结束伪指令源程序结束伪指令指令格式指令格式 END 地址地址指令功能指令功能表示汇编语言源程序结束;表示汇编语言源程序结束;可选的地址用于可选的地址用于指出程序的起点指出程序的起点,一般为标号或,一般为标号或过程名表示的符号地址。过程名表示的符号地址。详见课本详见课本P9009 七月 202421简化的源程序结构简化的源程序结构.model small.stack.data .code.startup;-;-.exitendMOV AX,DATAMOV DS,AXMOV AX,4C00HINT 21H可添加子程序代码可添加子程序代码存储模式存储模式简化段定义伪指令简化段定义伪指令09 七月 202422存储模式说明存储模式说明简化模式下,必须使用简化模式下,必须使用.MODEL伪指令指明存储模式;伪指令指明存储模式;汇编程序根据该伪指令生成相应的汇编程序根据该伪指令生成相应的ASSUME语句等;语句等;可选的存储模式可选的存储模式TINY:COM文件使用;文件使用;SMALL:一个数据段、一个代码段,只支持段内转移;:一个数据段、一个代码段,只支持段内转移;COMPACT:多个数据段,一个代码段;:多个数据段,一个代码段;MEDIUM:一个数据段,多个代码段,可以做段间转移;:一个数据段,多个代码段,可以做段间转移;LARGE:多个数据段,多个代码段,必须:多个数据段,多个代码段,必须64KB以下数组;以下数组;HUGE:多个数据段,多个代码段,可用:多个数据段,多个代码段,可用64KB以上数组;以上数组;FLAT:80386以上的以上的CPU模式下使用;模式下使用;09 七月 202423简化段定义伪指令简化段定义伪指令简化段段名简化段段名.CODE:代码段,其后是汇编指令;:代码段,其后是汇编指令;.DATA:数据段,其后是变量定义伪指令;:数据段,其后是变量定义伪指令;.STACK 堆栈字节数堆栈字节数:堆栈段,缺省:堆栈段,缺省1024字节;字节;.STARTUP用于代码段的开始,可自动初始化段寄存器;用于代码段的开始,可自动初始化段寄存器;.EXIT用于结束程序的运行;用于结束程序的运行;09 七月 202424处理器选择伪指令处理器选择伪指令缺省方式下,汇编程序只处理缺省方式下,汇编程序只处理16位系统的指令;位系统的指令;使用使用32位系统指令,需要在源程序开始指明处理器类型;位系统指令,需要在源程序开始指明处理器类型;.8086:默认类型;:默认类型;.286、.286P、.386、.386P、.486、.486P、.586、.586P、.686、.686PnP表示可使用特权指令;表示可使用特权指令;一个源程序中可混合使用多种处理器选择伪指令。一个源程序中可混合使用多种处理器选择伪指令。09 七月 2024254.4 DOS功能调用和功能调用和BIOS功能调用功能调用BIOS功能调用功能调用BIOS例例行行程程序序是是系系统统加加电电自自检检时时,所所用用到到的的主主要要I/O设设备备程程序序以及接口控制等功能模块以及接口控制等功能模块;n直接直接调用调用这些模块,这些模块,使程序员不必了解硬件接口的特性;使程序员不必了解硬件接口的特性;DOS功能调用功能调用DOS磁盘操作系统,有磁盘操作系统,有IO.SYS和和MSDOS.SYS两个模块两个模块;DOS模模块块提提供供了了更更多多更更必必要要的的测测试试,使使用用DOS调调用用比比使使用用相相应功能的应功能的BIOS操作更简易,而且对硬件的依赖性更少些。操作更简易,而且对硬件的依赖性更少些。课本课本P9609 七月 202426DOS功能调用的使用方法功能调用的使用方法1.设置入口参数设置入口参数(AH)=功能调用号功能调用号其他参数根据功能需要而不同,也可没有;其他参数根据功能需要而不同,也可没有;2.执行指令执行指令INT 21H,调用相应的,调用相应的DOS模块模块3.获得输出参数获得输出参数根据不同的功能从不同的位置获取,也可没有。根据不同的功能从不同的位置获取,也可没有。4.4.1 常用的常用的DOS功能调用功能调用单字符输入单字符输入01号功能调用号功能调用单字符输出单字符输出02号功能调用号功能调用字符串输出字符串输出09号功能调用号功能调用字符串输入字符串输入0A号功能调用号功能调用程序结束返回程序结束返回4C号功能调用号功能调用09 七月 20242709 七月 202428功能调用号:功能调用号:01H入口参数:无入口参数:无出口参数出口参数:(AL)=输入字符的输入字符的ASCII码码举例:从键盘上获取一位十进制数据。举例:从键盘上获取一位十进制数据。指令序列:指令序列:执行时状态:执行时状态:光标等待键盘输入光标等待键盘输入,输入一个字符,输入一个字符“1”后返回;后返回;n在屏幕上可看到输入的字符;在屏幕上可看到输入的字符;出口参数:出口参数:(AL)=31H结果处理:结果处理:所需的十进制数据所需的十进制数据=(AL)-30H1、单字符输入(、单字符输入(01号功能调用)号功能调用)MOV AH,01HINT 21H09 七月 2024292、单字符输出(、单字符输出(02号功能调用)号功能调用)功能调用号:功能调用号:02H入口参数:入口参数:(DL)=待输出字符的待输出字符的ASCII码码出口参数出口参数:无:无举例:输出显示变量举例:输出显示变量CHAR所存放的字母所存放的字母指令序列:指令序列:MOV AH,02HMOV DL,CHARINT 21H若若CHAR变量定义如上,则以上指令序列执行完毕变量定义如上,则以上指令序列执行完毕会在屏幕上显示字符会在屏幕上显示字符“F”。CHAR DB F09 七月 2024303、字符串输出(、字符串输出(09号功能调用)号功能调用)功能调用号:功能调用号:09H入口参数:入口参数:(DS:DX)=待输出字符串的起始地址待输出字符串的起始地址欲输出字符串欲输出字符串必须以必须以“$”为结束为结束事先存放于存储器中。事先存放于存储器中。出口参数出口参数:无无试将变量试将变量String保存的字符串显示出来。保存的字符串显示出来。变量定义:变量定义:String DB “ABCD$”指令序列:指令序列:“$”是作为显示终是作为显示终止符使用的!止符使用的!MOV AX,SEG StringMOV DS,AXLEA DX,StringMOV AH,09HINT 21H09 七月 2024314、字符串输入(、字符串输入(0A号功能调用)号功能调用)功能调用号:功能调用号:0AH入口参数:入口参数:(DS:DX)=存放输入字符串的起始地址存放输入字符串的起始地址注意:存放输入字符串的缓冲区注意:存放输入字符串的缓冲区必须事先按格式定义必须事先按格式定义;缓冲区定义格式如:缓冲区定义格式如:BUF DB n,?,n DUP(?)出口参数出口参数:在缓冲区中保存输入字符串及其长度。在缓冲区中保存输入字符串及其长度。缓冲区可接收缓冲区可接收的最大字符数的最大字符数实际接收的实际接收的字符个数字符个数接收的接收的字符串字符串09 七月 202432从键盘上接收一个字符串举例从键盘上接收一个字符串举例数据段定义:数据段定义:DATA1 SEGMENT buf DB 5,?,5 DUP(0)DATA1 ENDS输入字符串的指令序列:输入字符串的指令序列:MOV AX,SEG bufMOV DS,AXLEA DX,bufMOV AH,0AHINT 21H以上指令序列执行,光标等待键盘输入,输入以上指令序列执行,光标等待键盘输入,输入字符串字符串“abcd”,以回车结束以回车结束,即返回,存储,即返回,存储单元的状态如右图。单元的状态如右图。05-0000000000buf04616263640D09 七月 2024330A号号DOS功能调用使用注意事项功能调用使用注意事项输入字符串的长度限制输入字符串的长度限制输入字符串的长度受限于缓冲区的第一个字节数据;输入字符串的长度受限于缓冲区的第一个字节数据;若缓冲区定义:若缓冲区定义:BUF DB 10,?,10 DUP(0)则最多可输入则最多可输入9个字符;个字符;n字符串输入的字符串输入的回车结束符也会保存于缓冲区中回车结束符也会保存于缓冲区中缓冲区初始化:缓冲区初始化:若输入的字符串最终需要输出,则可在缓冲区定义时,将若输入的字符串最终需要输出,则可在缓冲区定义时,将其初始化为其初始化为“$”,以使输出的字符串能够正常结束。,以使输出的字符串能够正常结束。注意,最后输入的回车符的处理。注意,最后输入的回车符的处理。09 七月 202434例例.输入字符串,并换行回显。输入字符串,并换行回显。DATA1 SEGMENT buf DB 10,?,10 DUP($)DATA1 ENDSCODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1START:MOV AX,DATA1 MOV DS,AX LEA DX,buf MOV AH,0AH INT 21HMOV AH,2MOV DL,10INT 21HMOV DL,13INT 21HLEA DX,buf+2 MOV AH,09HINT 21HMOV AX,4C00HINT 21HCODE1 ENDSEND START4.2 汇编语句表达式汇编语句表达式1、运算符、运算符2、表达式、表达式09 七月 20243509 七月 2024361、运算符、运算符数值运算符数值运算符算术运算符算术运算符、逻辑运算符逻辑运算符、关系运算符关系运算符属性运算符属性运算符段属性段属性SEG、偏移属性偏移属性OFFSET、类型属性类型属性TYPE长度属性长度属性LENGTHOF、容量属性容量属性SIZEOF属性修改运算符属性修改运算符强制类型强制类型PTR09 七月 202437算术运算符算术运算符运算符类型运算符类型+(正号正号)、-(负号负号)+(加加)、-(减减)、*(乘乘)、/(除除)、MOD(取模取模)算术运算符与算术运算符与立即数立即数、常量常量、括号括号等构成数值表达式。等构成数值表达式。变量变量不能参与算术运算构成数值表达式。不能参与算术运算构成数值表达式。例如:例如:120+(321-90)mod 3 322*5/32=120+231 mod 3=120+0=120=78H=1610/32=50=32H 09 七月 202438逻辑运算符逻辑运算符运算符类型运算符类型AND(与与)、OR(或或)、NOT(非非)、XOR(异或异或)SHL(左移左移)、SHR(右移右移)逻辑运算符可与逻辑运算符可与立即数立即数、常量常量、括号括号等构成数值表达式。等构成数值表达式。变量变量不能参与逻辑运算。不能参与逻辑运算。例如:例如:1 SHL 3 47H AND 0FH NOT 56H=08H=07H=0A9H09 七月 202439关系运算符关系运算符运算符类型运算符类型EQ(等于等于)、NE(不等不等)、LT(小于小于)、GT(大于大于)、LE(小于等于小于等于)、GE(大于等于大于等于)关系运算符可与关系运算符可与立即数立即数、常量常量、变量变量、括号括号等构成数值表达式。等构成数值表达式。关系运算只能有关系运算只能有0(假)(假)和和0FFH(真)(真)两个返回值。两个返回值。返回值以二进制补码形式表示,位数由目的操作数决定;返回值以二进制补码形式表示,位数由目的操作数决定;例如:例如:MOV AX,120 LT 100H MOV AL,21 EQ 21H(AX)=0FFFFH(AL)=009 七月 202440属性操作符属性操作符属性操作符是面向属性操作符是面向变量变量或或标号标号的;的;属性操作符的类型属性操作符的类型返回值型返回值型:获取变量或标号的相关属性返回值;:获取变量或标号的相关属性返回值;强制转换型强制转换型:强制改变变量或标号的相关属性;:强制改变变量或标号的相关属性;变量和标号是在数据定义和程序中设置的标识符;变量和标号是在数据定义和程序中设置的标识符;变量:表示数据的地址变量:表示数据的地址B1 DB 12H标号:表示指令的地址标号:表示指令的地址LOOP1:MOV AX,BX09 七月 202441段属性操作符段属性操作符 SEG格式:格式:SEG 功能功能返回标识符所在段的段地址;返回标识符所在段的段地址;例如:例如:MOV AX ,SEG NEXTMOV BX ,SEG DATA若存储器如右所示,则以上指令执行后若存储器如右所示,则以上指令执行后(AX)=1000H,(BX)=2000HNEXTDATA代代码码段段CS数数据据段段DS1000H2000H09 七月 202442偏移量属性操作符偏移量属性操作符 OFFSET格式:格式:OFFSET 功能功能返回该标识符的段内偏移地址;返回该标识符的段内偏移地址;例如:数据段定义如下:例如:数据段定义如下:X1DW12H,100HX2DD0X3DB?,A若执行指令:若执行指令:MOV AX,OFFSET X1 MOV BX,OFFSET X3(AX)=0000H,(BX)=0008H1200000100000000-41X1X2数据段数据段0000H0001H0002H0003H0004H0005H0006H0007H0008H0009HX309 七月 202443类型属性操作符类型属性操作符 TYPE格式格式 TYPE 功能功能返回变量和标号的类型值;返回变量和标号的类型值;类型值类型值变量:每个变量所占的字节数;变量:每个变量所占的字节数;标号:标号的标号:标号的NEAR、FAR类型;类型;标识符类型标识符类型TYPE值值字节(字节(DB)1字(字(DW)2双字(双字(DD)4近标号近标号(NEAR)-1远标号远标号(FAR)-209 七月 202444类型属性操作符举例类型属性操作符举例例如:数据段定义如下:例如:数据段定义如下:X1DW12H,100HX2DD0 若执行指令:若执行指令:MOV AX,TYPE X1 MOV BL,TYPE X2则则(AX)=0002H,(BL)=04H1200000100000000X1X2数据段数据段0000H0001H0002H0003H0004H0005H0006H0007H09 七月 202445长度属性操作符长度属性操作符 LENGTHOF格式格式 LENGTHOF n只能应用于变量;只能应用于变量;功能功能返回返回变量变量所定义的数据个数;所定义的数据个数;例如例如变量定义为:变量定义为:ARRAY1 DW 2 DUP(0,1),1则指令则指令MOV AL,LENGTHOF ARRAY1后,后,(AL)=;5课本上的是课本上的是LENGTH,LENGTH对于对于DUP定义的变量,不能确定义的变量,不能确切反映实际的元素个切反映实际的元素个数!数!09 七月 202446容量属性操作符容量属性操作符 SIZEOF格式:格式:SIZEOF n只能应用于变量;只能应用于变量;功能:功能:返回返回变量变量的所占存储单元的数目;的所占存储单元的数目;例如例如变量定义为:变量定义为:ARRAY1 DW 2 DUP(0,1),1则指令则指令MOV AL,SIZEOF ARRAY1后,后,(AL)=;0AH09 七月 202447强制属性操作符强制属性操作符 PTR格式:格式:PTR PTR 功能:功能:将标识符的类型属性将标识符的类型属性临时性地临时性地强制为指定的类型;强制为指定的类型;n该强制只在本条指令内有效;该强制只在本条指令内有效;常用的类型:常用的类型:BYTE、WORD、DWORD、NEAR、FAR变量的类型变量的类型标号的类型标号的类型09 七月 202448强制属性操作符举例强制属性操作符举例例如:数据段定义如下:例如:数据段定义如下:X1DW12H,100H X2DD1234H X3DB10,A请问以下指令是否正确:请问以下指令是否正确:MOV AX,X1MOV AX,X2MOV AX,X312000001341200000A41X1X2字字字字双双字字字节字节字节字节正确,正确,(AX)=0012HWORD PTR X2WORD PTR X3(AX)=1234H(AX)=410AHX309 七月 202449运算符的优先顺序运算符的优先顺序LENGTHOF、SIZEOF、()、()SEG、OFFSET、TYPE*、/、MOD、SHL、SHRHIGH、LOW+、-EQ、NE、LT、GT、LE、GENOTANDOR、XOR优优先先权权依依次次降降低低09 七月 2024502、表达式、表达式表达式是由表达式是由运算符运算符、操作符操作符、常量常量和和变量变量等构成的式子;等构成的式子;表达式要在程序的表达式要在程序的汇编过程中计算汇编过程中计算出具体数值的,各个部出具体数值的,各个部分的值需要在汇编期间完全确定;分的值需要在汇编期间完全确定;注意:注意:表达式中不能出现寄存器表达式中不能出现寄存器,因为在汇编期间程序,因为在汇编期间程序尚未执行,寄存器中的数值不确定!尚未执行,寄存器中的数值不确定!表达式又可分为表达式又可分为数值表达式数值表达式和和地址表达式地址表达式。数值表达式表示数据,可作为立即数使用;数值表达式表示数据,可作为立即数使用;地址表达式表示地址,一般由符号地址等构成。地址表达式表示地址,一般由符号地址等构成。09 七月 202451表达式的构成表达式的构成数值表达式数值表达式由立即数、常量、字符或字符串与数值运算符构成;由立即数、常量、字符或字符串与数值运算符构成;n字符或字符串使用时,应用引号括起来;字符或字符串使用时,应用引号括起来;由变量、标号与属性操作符构成;由变量、标号与属性操作符构成;由由两个符号地址相减两个符号地址相减构成表示二者之间距离的表达式;构成表示二者之间距离的表达式;地址表达式地址表达式由变量、标号、运算符(由变量、标号、运算符(+、-)、)、地址计数器地址计数器$构成;构成;n典型的地址表达式:符号地址典型的地址表达式:符号地址Imm;09 七月 202452地址表达式举例地址表达式举例例如:数据段定义如下:例如:数据段定义如下:X1DW12H,100H X2DD1234H X3DB10,A地址表达式地址表达式MOV AX,X1+2MOV AX,X1+1MOV AL,BYTE PTR X2-2MOV AL,X3+1注意:注意:地址表达式的类型与标识符的类型相同地址表达式的类型与标识符的类型相同。12000001341200000A41X1X2X3(AL)=00H(AL)=41H(AX)=0100H(AX)=0000H09 七月 202453地址表达式作为变量定义伪指令的操作数地址表达式作为变量定义伪指令的操作数变量定义伪指令的操作数可以是表达式,包括数值表达式和地变量定义伪指令的操作数可以是表达式,包括数值表达式和地址表达式;址表达式;例如:例如:ORG 100H DATALIST DB 1,2,3ADDR1 DW DATALISTADDR2 DD NEXT NEXT:MOV AL,12HADDR1=0100H ADDR2占用占用4个字节保存个字节保存指令的地址指令的地址段地址和偏移地址。段地址和偏移地址。09 七月 202454地址计数器引用符号地址计数器引用符号$符号使用方法符号使用方法格式:格式:$Imm其值表示当前偏移量计数器的值其值表示当前偏移量计数器的值Imm的的立即数立即数;功能:功能:用于构成地址或数据表达式;用于构成地址或数据表达式;例如:例如:ORG 100HD1 DB 12HW1 DW$,$ORG$+3B1 DB 43H100H101H102H103H104H105H106H107H108H12D10101W1030143B1空出空出3个个单元单元09 七月 202455注意区分注意区分变量的类型变量的类型字节、字、双字,可使用字节、字、双字,可使用PTR、THIS等操作符改变类型;等操作符改变类型;符号变量和符号常量符号变量和符号常量伪指令伪指令DB、DW、DD等定义符号变量,标识符等定义符号变量,标识符表示地址表示地址;定义符定义符EQU、=等定义符号常量,标识符等定义符号常量,标识符表示数值表示数值;数值表达式和地址表达式数值表达式和地址表达式数值表达式中可使用多种运算符;数值表达式中可使用多种运算符;n除关系运算、属性操作外,数值表达式大多不允许变量参与;除关系运算、属性操作外,数值表达式大多不允许变量参与;地址表达式中变量的运算一般只使用地址表达式中变量的运算一般只使用+、-运算符运算符;n一般形式为:符号地址一般形式为:符号地址立即数;立即数;09 七月 202456本章小结本章小结必须熟练掌握必须熟练掌握汇编语言源程序的汇编语言源程序的完整结构完整结构格式;格式;掌握常用的掌握常用的变量、常量定义伪指令变量、常量定义伪指令的使用;的使用;理解常量和变量的区别;理解常量和变量的区别;熟悉常用的属性操作符,能够适当应用熟悉常用的属性操作符,能够适当应用数值和地址表达式数值和地址表达式;掌握并能熟练使用常用的掌握并能熟练使用常用的DOS功能调用;功能调用;理解理解DOS功能调用的实质,熟悉入出口参数的设置功能调用的实质,熟悉入出口参数的设置;本章作业本章作业P1173、4、5、9、11讲完指令后完成的作业:讲完指令后完成的作业:6、7、8、12、14、1509 七月 202457
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!