汇编语言程序设计第4章汇编语言程序课件.ppt

上传人:小飞机 文档编号:1967713 上传时间:2022-12-28 格式:PPT 页数:26 大小:103.80KB
返回 下载 相关 举报
汇编语言程序设计第4章汇编语言程序课件.ppt_第1页
第1页 / 共26页
汇编语言程序设计第4章汇编语言程序课件.ppt_第2页
第2页 / 共26页
汇编语言程序设计第4章汇编语言程序课件.ppt_第3页
第3页 / 共26页
汇编语言程序设计第4章汇编语言程序课件.ppt_第4页
第4页 / 共26页
汇编语言程序设计第4章汇编语言程序课件.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《汇编语言程序设计第4章汇编语言程序课件.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第4章汇编语言程序课件.ppt(26页珍藏版)》请在三一办公上搜索。

1、汇编语言程序设计,第 4 章 汇编语言程序,教案,汇编语言程序设计第 4 章 汇编语言程序教案,第 4 章 汇编语言程序,4.1 汇编语言语句格式4.2 伪指令语句4.3 汇编语言程序设计的过程习题例,第 4 章 汇编语言程序4.1 汇编语言语句格式,汇编语言程序的指令,8086/8088汇编语言源程序由三类指令组成:执行指令(符号指令)提供给汇编程序“翻译”成机器能直接执行的指令。伪指令(汇编指示指令)提供给汇编程序指示汇编操作的指令。宏指令提供给汇编程序的扩展的“功能宏大”的指令。,汇编语言程序的指令8086/8088汇编语言源程序由三类指令,汇编语言源程序的语句格式, ;名字项是一个用户

2、自定义的标识符。操作符项是(执行/伪/宏)指令的助记符号保留字。操作数项是指令的操作对象 (多个用“,”分隔) 。注释项是开始于“;” 的提供的阅读信息。注意:各项之间用空格键符,或TAB键符分界。操作符项必须有,其它项可选择有/无。,例如,执行指令的语句格式: : ;,汇编语言源程序的语句格式 ,标识符,标识符由字母A/aZ/z,09,特殊字符 ?、 . 、 、_ 、 $等字符(少于32个字符,第1个字符不能是数字, “. ”只能做第1个字符)组成。标识符在名字项中被定义,可以是标号(结束于“:”)、变量名、符号常数名、段名、过程名等。定义了的标识符可以在操作数项中被使用。* 标号、过程名作

3、为转移地址使用。 * 变量名作为内存单元的偏移地址(EA)使用。* 符号常数名作为立即数使用。* 段名作为段基址立即数使用。,标识符标识符由字母A/aZ/z,09,特殊字符 ?、,操作数表达式,操作数是指令操作的具体操作对象,可以是操作数据,也可以是转移地址。操作数个数有0个操作数(无操作数,或者是隐含的固定寻址操作数)、1个操作数、多个操作数(多个操作数之间用“,”分割)。操作数可以用规定的汇编表达式描述。汇编表达式是由寄存器、常量、变量、标号,以及运算符组成的,能被汇编程序计算出结果的操作数表达式。汇编表达式分为数值表达式和地址表达式两种。,操作数表达式操作数是指令操作的具体操作对象,可以

4、是操作数据,数值表达式,数值表达式:由常数和数值运算符组成,计算结果是字节/字整数数据的表达式。数字常数(立即数) : 常量直接给出2# /10# /16# 数、ASCII字符数值常量给常数起一个符号名的符号常数数值运算符(运算对象和结果是整数常数): P66, 表4.1 算术运算符: +、*、/、MOD逻辑运算符:NOT、AND、OR、XOR、SHL、SHR 关系运算符: EQ、NE、GT、GE、LT、LE (真值为-1,即全1,假值为0),数值表达式数值表达式:由常数和数值运算符组成,计算结果是字,地址表达式,地址表达式:由常量、变量、标号、BP、BX、SI、DI,以及运算符组成的,计算结

5、果为内存地址数值表达式。地址的属性:段基址、偏移址、类型(BYTE、WORD、DWORD、NEAR,FAR)地址运算符(常用): P67,表4.2地址算术运算符:+ 、 ; 取偏移址的相对位移量属性定义运算符: :(段超越前缀)、 PTR(类型运算)分析运算符:SEG(取段基址值)OFFSET(取偏移址值)TYPE(取地址类型值,1/2/4/-1/-2)LENGTH(取变量单元数)SIZE(取变量总字节数)用运算符TYPE、LENGTH和SIZE作用在变量名上,能分别得到变量的类型、单元数和总字节数。SIZE = TYPE LENGTH,地址表达式 地址表达式:由常量、变量、标号、BP、B,汇

6、编运算符的优先级,汇编运算符的优先级运算符号优先级LENGTH、SIZE、(,地址运算符应用例,;P68,【例4.2】(设DATA段地址为2000H)DATA SEGMENTD1 DB 41H, 6DHD2 DW 803AH, 104FHD3 DD 12345678H, 0ABCDEF9HD4 DW 40 DUP (1) DATA ENDS,MOV AX, SEG D1 ; AX=2000HMOV BX, OFFSET D2 ; BX=2MOV DX, OFFSET D3 ; DX=6MOV DX, TYPE D3 ; DX=4MOV AX, LENGTH D4 ; AX=40MOV BX,

7、SIZE D4 ; BX=80MOV AL, HIGH 1234H ; AL=12H,地址运算符应用例 ;P68,【例4.2】(设DATA段地址为,汇编语言程序的伪指令,提供给汇编程序的指示汇编操作控制的指令语句, 称为伪指令。常用的伪指令分成五组:符号定义、内存数据定义、段定义、过程定义和模块定义。常用的伪指令语句:EQU 、 = (符号定义)DB、 DW 、 DD (变量定义)SEGMENT 、 ENDS 、ASSUME(段定义)ORG (段内偏移址指针$设置)PROC 、 ENDP (过程子程序定义)NAME 、END (模块定义),汇编语言程序的伪指令提供给汇编程序的指示汇编操作控制的

8、指令,1. 符号定义伪指令,符号等值伪指令EQU格式: EQU 等号伪指令=格式: =与EQU的不同: = 只能是合法的汇编表达式。 = 的可以重复定义。,1. 符号定义伪指令符号等值伪指令EQU,符号定义伪指令例,count EQU 9 b=20b=b+10 ;可以重新定义,b=30d=(count+4)*2;d=26 f EQU 123456H;正确,“123456H”为正文g=123456H;错误,数值超范围(16位2#)例如: addr EQU es:bx+si如果,指令mov ax, addr;即为mov ax, es:bx+si,符号定义伪指令例count EQU 9 b=20,2

9、. 内存变量定义伪指令,内存变量定义伪指令DB、DW 和 DD 格式: DB / DW / DD 功能:定义内存变量和类型,分配和初始化内存单元数据。,2. 内存变量定义伪指令内存变量定义伪指令DB、DW 和 D,内存变量定义的数据表,内存变量定义的数据表,给出了顺序存放在内存单元的数据,多个数据之间用“ ,”分隔。数据表的数据项可以是:数值表达式DB(8位数值)DW(16位数值)DD(32位数值)地址表达式DW( 16位偏移址值)DD( 16位偏移址值, 16位段基址值)字符串:用单/双引号界定的字符串(ASCII码值)。 ?:分配内存单元,不给出数据。 DUP : 数据重复定义子句(可嵌套

10、使用)。格式: DUP (),内存变量定义的数据表内存变量定义的数据表,给出了顺序存放在内,内存变量定义例,数组是若干个连续的同类型的内存单元数据,具有唯一的名字。数组常用DUP伪操作表达式定义。例如: ARA DW 20 DUP(0) P71,图4.2:DATA1 DB 0, 45H, 0FFH, ?DATA2 DB HELLO!DATA3 DB 10, 2 DUP (2 DUP (1, 2),3) P72,图4.3: ARRAYW DW -1, 1234H, 2 DUP (-32768) ADDR DW ARRAYW+2STRING DW EH, LL,!0,内存变量定义例数组是若干个连续

11、的同类型的内存单元数据,具有,3. 段定义伪指令,段定义伪指令SEGMENT格式: SEGMENT 段结束伪指令ENDS格式: ENDS(SEGMENT语句与对应的ENDS语句的段名必须一致。)段基址说明伪指令 ASSUME 格式:ASSUME segreg:,. (segreg可以是CS、DS、ES和SS,段名是已定义的。)偏移址指针$设置伪指令 ORG格式:ORG ; 数值065535,3. 段定义伪指令段定义伪指令SEGMENT,程序的代码段结构: SEGMENT ;段开始 ASSUME CS:, DS: ENDS;此段结束程序的数据段结构: SEGMENT ;段开始 ENDS;此段结束

12、,程序的段结构,程序的代码段结构:程序的段结构,4. 过程(子程序)定义伪指令,过程定义伪指令 PROC格式: PROC NEAR/FAR(过程的类型:NEAR 段内过程,FAR 段间过程 。)过程结束伪指令ENDP格式: ENDP(PROC语句与对应的ENDP语句的过程名必须一致。),4. 过程(子程序)定义伪指令过程定义伪指令 PROC,过程(子程序)结构必须在代码段结构内。 SEGMENT ;段开始 ASSUME CS: , DS: CALL ;调用过程指令 PROC ;过程开始 RET;过程返回指令 ENDP;过程结束 ENDS;段结束,过程(子程序)的结构,过程(子程序)结构必须在代

13、码段结构内。过程(子程序)的结构,5. 程序模块定义伪指令,程序模块开始伪指令NAME格式: NAME (程序模块开始于NAME伪指令 ,可省略。)程序模块结束伪指令END格式: END (程序模块结束于END伪指令 ,不可省略。),5. 程序模块定义伪指令,; P63, 【例4.1】NAME EXAMPLEDSEG SEGMENT data1db 4 dup (1),10h,11,0ah,0,0bh sum db ? count egu 9DSEG ENDSSSEG SEGMENT STACKdw 100H dup (?)SSEG ENDS,CSEG SEGMENT ASSUME CS:CS

14、EG,DS:DSEG,SS:SSEGSTART :MOV AX,DSEG MOV DS,AX ;设置DS MOV AX,4C00H ;返回DOSINT 21HCSEG ENDS END START,汇编语言源程序结构例,; P63, 【例4.1】CSEG SEGMENT汇编语,汇编语言程序设计的处理软件,汇编语言程序设计的系统软件: 编辑程序EDIT.EXE / 记事本汇编程序MASM.EXE / TASM.EXE连接程序LINK.EXE / TLINK.EXE 调试程序DEBUG.EXE / TD.EXE *上述系统软件是在MS-DOS环境下使用!,汇编语言程序设计的处理软件汇编语言程序设计

15、的系统软件:,汇编语言程序设计过程,汇编语言程序设计过程源文件(例: EX1.ASM)执行文件(,4.4 根据以下数据段定义,执行指令,给出相关寄存器内容。(设DATA段地址为1000H)DATA SEGMENTD1 DB 61H, 52HD2 DW 3456H, 0123HD3 DB 20 dup (0)DATA ENDSMOV AX, SEG D2; AX=1000HMOV BX, OFFSET D3; BX= 6 MOV CX, TYPE D1; CX= 1MOV DH, SIZE D2; DH= 4,习题4.4,4.4 根据以下数据段定义,执行指令,给出相关寄存器内容。习,习题4.5,4.5 根据以下数据段定义,指出指令中的错误。DATA SEGMENTNUM=48X DB NUMY DB 56Z DW 300 DATA ENDSMOV DS, DATA; 立即数不能直接送给段RMOV AX, X; 数据类型不匹配MOV NUM, BX; 目的数不能是立即数MOV AL, Z; 数据类型不匹配MOV Y, BX ; 数据类型不匹配MOV X, Y; 不能2个数都是内存寻址,习题4.54.5 根据以下数据段定义,指出指令中的错误。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号