1 / 98

第八讲 一、汇编语言语句格式 二、符号定义伪指令 三、数据定义伪指令 四、汇编语言数据 五、表达式与运算符 六、程序的段结构

第八讲 一、汇编语言语句格式 二、符号定义伪指令 三、数据定义伪指令 四、汇编语言数据 五、表达式与运算符 六、程序的段结构. 一、汇编语言语句格式. 汇编语言源程序 汇编程序目标程序. 汇编语言源程序的 基本组成单位 是语句 . 源程序中使用的语句有三种 : 指令语句、伪指令语句和宏指令语句 ( 或称宏调用语句 ). 第一节、汇编语言语句格式. 一、指令语句的一般格式如下: 标号:指令助记符 操作数 ;注释. 例如: 以下是含有 4 个字段的一条指令语句: LOP : MOV AX , 0000H ;将 AX 清零。

lorna
Download Presentation

第八讲 一、汇编语言语句格式 二、符号定义伪指令 三、数据定义伪指令 四、汇编语言数据 五、表达式与运算符 六、程序的段结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八讲 一、汇编语言语句格式 二、符号定义伪指令 三、数据定义伪指令 四、汇编语言数据 五、表达式与运算符 六、程序的段结构

  2. 一、汇编语言语句格式 汇编语言源程序 汇编程序目标程序

  3. 汇编语言源程序的基本组成单位是语句. • 源程序中使用的语句有三种:指令语句、伪指令语句和宏指令语句(或称宏调用语句).

  4. 第一节、汇编语言语句格式 一、指令语句的一般格式如下: 标号:指令助记符 操作数 ;注释

  5. 例如: 以下是含有4个字段的一条指令语句: LOP:MOV AX,0000H;将AX清零。 例如:以下是一条单操作数指令语句 INC CX

  6. 二、伪指令语句格式 • 伪指令语句是指示汇编程序如何汇编源程序的命令语句,在汇编时,不产生语句代码,由汇编程序解释它的意义并立即完成相应的操作。 • 伪指令语句格式如下: 符号名 伪指令符 操作数 ;注释

  7. 例如:以下是一条伪指令语句 • VAR1 DB 12H;给变量分配一个字节单元,初值为12H

  8. 三、标识符 • 标识符是指令语句中标号和伪指令语句中的符号名的统称,其组成规则如下:

  9. 1.字符个数是1~31个 • 2.名字的第一个字符必须是字母、问号、或下画线(_)$ @?.等5种字符之一。 • 3.不得使用属于系统专用的保留字。保留字包括:中央处理器中各寄存器名,指令助记符,伪指令,各种运算符。

  10. 例如: • 标识符 ?ABC ——VAR .234 A2 • 非标识符:1ABC +VAR ADD 256

  11. 第二节、符号定义伪指令 • 一、等值语句 • 语句格式: • 符号 EQU 表达式 • EQU伪指令的作用是将表达式的值或表达式赋给它左边的符号。

  12. 例如:用符号表示常数、数值表达式 • NUM EQU 10H • CONT EQU 123+34-67 • VAR DB NUM • …MOV AX,NUM

  13. 例如:用符号代表地址表达式、变量名和标号 • ADR EQU ES:[BX][SI] • VB EQU DATA_BYTE+1 • LI EQU FAR PTR SUB1 • ……. • MOV ADR ,AL • ADD BL,VB • JMP LI

  14. 例如: • 用符号表示寄存器、指令助记符 • AREG EQU AX • M EQU MOV • …… • MOV AREG ,1234H • M CX, BX

  15. 注意: • 在一个源程序中,同一个符号不能用EQU伪指令重新定义. • 例如: • M EQU MOV • …M EQU MUL • 第二条语句在汇编时,会产生符号重新定义的语法错误.

  16. 二、等号语句 • 语句格式: 符号=表达式 • 等号语句可以重新定义符号

  17. 例如: CONT =10 M=MOV …… CONT =CONT+10 M=MUL

  18. 第三节、数据定义伪指令 • 数据定义伪指令语句格式如下; DB 变量名 DW 表达式1,表达式2 DD

  19. 例如: 在DATA1数据段中定义了3个变量: DATA1 SEGMENT VAR1 DB 10H VAR2 DW 1234H VAR3 DD 12345678H DATA1 ENDS

  20. 段属性 变量的三个属性:偏移量属性 类型属性 (1)段属性SEG 段属性表示变量存放在哪一个逻辑段中, 它是用变量所在的段的段基值表示的.

  21. (2)偏移量属性OFFSET 该属性表示变量在逻辑段中相距段起始 地址的字节数。 上述段和偏移量两个属性就构成了变量 的逻辑地址。

  22. (3)类型属性TYPE 该属性表示变量所占存储单元的字节个数。DB将变量定义为字节型(1个字节),DW将变量定义为字型(2个字节),DD将变量定义为双字型(4个字节)。

  23. 数据定义伪指令按照伪指令DB,DW和DD所确定的数据大小来分配相应数量的存储单元,同时给这些存储单元预置由对应表达式确定的初值。表达式 有如下几种情况: • 1.数值表达式 • 2.字符串表达式 • 3.?表达式 • 4.带DUP表达式

  24. 例如:DATA数据段中定义了字节、字、双字变量。例如:DATA数据段中定义了字节、字、双字变量。 DATA SEGMENT VARB1 DB 10H VARB2 DB 10,11,12 DB 0FFH,0 VARW DW 1234H,5678H VARD DD 12345678H DATA ENDS

  25. 34H VARBW 字 … 12H 10H VARB1 78H 字 VARB2 0AH 56H 0BH 78H VARBW 0CH 56H 双字 FFH 34H 12H 00H ….

  26. 例如:以下是3个字符串变量的定义。 DATA_S SEGMENT STRING1 DB ‘ABCD’ STRING2 DW ‘AB’,’CD’,’A’ STRING3 DD ‘AB’ DATA_S ENDS

  27. 44H 字 … 43H 41H STRING1 41H 字 42H 00H 43H 42H STRING3 44H 41H 双字 42H STRING2 00H 字 00H 41H …. STRING3 DD ‘AB’ STRING1 DB ‘ABCD’ STRING2 DW ‘AB’,’CD’,’A’

  28. 例如:有以下两个变量的定义: VAR_B DB ?,? VAR_W DW ?,? (不需要预设初值)

  29. (4)带DUP表达式 数据定义伪指令语句格式如下: DB 变量名 DW 表达式1 DUP(表达式2) DD DUP可以嵌套 其中,表达式1是重复的次数 表达式2是重复数据的内容

  30. 例如:以下是带DUP表达式的变量定义: ARYB1 DB 10H DUP(2) ARYB2 DB 20H DUP(‘ABC’) ARYW DW 10H DUP(?)

  31. 02H ARYB1 ARYB1 DB 10H DUP(2) 02H 重复10H次,共10H单元 ….. 41H ARYB2 42H 重复20H次,共60H单元 43H ARYB2 DB 20H DUP(‘ABC’) … 43H 00H ARYW 重复10H次,共20H单元 …. ARYW DW 10H DUP(?) ….

  32. ————8086/8088CPU DUP操作符允许嵌套使用,即表达式2可以又是一个带DUP的表达式. 例如: ARY_B3 DB 10H DUP(6,3 DUP(5),7) 表示重复10H个数据序列”6,5,5,5,7”,共占用5*10H个字节单元.

  33. 第四节、汇编语言数据 1.数值常数 在源程序中,允许数值常数以不同的进制表示.汇编时,由汇编程序将所有的数值常数都转换成二进制表示的目标代码.

  34. (1)二进制数 • 以字母B结尾,由0和1组成的数字序列. • 如10110100B.

  35. (2)八进制数 • 以字母Q或O结尾、由0~7组成的数字序列. • 如146Q,543O.

  36. (3)十进制数 • 由0~9组成的数字序列,结尾可带字母D也可不带字母。如278D,49。

  37. (4)十六进制数 • 以字母H结尾、由0~9和A~F(a~f)组成的数字序列. • 要求十六进制常数的第一个数必须是0~9:如2A19H,0A1H,0FFFFH。

  38. 2.字符串常数 • 单引号或双引号引起来

  39. 3. 常数的使用 • (1)在指令语句的源操作数中作立即数。如: • ADD AL,0F5H • MOV AX,‘AB’ • MOV CX,’12’

  40. (2)在指令语句中,可作为存储器操作数寻址方式中的位移量。如;(2)在指令语句中,可作为存储器操作数寻址方式中的位移量。如; • MOV AX,DS:[1000H] • ADD 10H[DI],CX • MOV AL,0ABH[BX] • SUB DX,1234H[BP][SI]

  41. (3)在数据定义伪指令中,可作为存储单元的初值。如;(3)在数据定义伪指令中,可作为存储单元的初值。如; • DB 10H,0F4H • DW 1234H • DB ‘ABCD’

  42. 二、变量 变量的使用分两种情况; (1)在指令语句中 • 直接引用变量名对变量进行存取操作 • 位移量使用变量名

  43. 例如: VAR1 DB 0FFH VAR2 DB ? STRING DB ‘ABCD’ … MOV AL,VAR1 MOV VAR2,AL MOV BL,STRING+1

  44. 例如: VAR3 DB 10H DUP(1) VAR4 DW 10H,DUP(?) … MOV AL,VAR3[SI] MOV VAR4[BX][DI],DX

  45. (2)在伪指令中的使用情况: • (偏移量属性和段属性) • 例如:假设DATA数据段的段基值为1000H,段中有以下数据定义语句:

  46. DATA SEGMENT • VARB DB 10H,20H • VARW DW 0FF00H • ARRAY DB 10H DUP(?) • ADR1 DW VARW • ADR2 DD ARRAY • DATA ENDS

  47. 第五节、表达式与运算符 表达式的概念:由常数、变量?? 运算符有五种: • 算术运算符 • 逻辑运算符 • 关系运算符 • 数值返回运算符 • 属性与分离字节运算符

  48. 一、算术运算符

  49. 例如: • … • CON1 EQU -16+250*3 • CON2 EQU CON1/23 • ORG 20H • VAR2 DB 12,13,‘AB’ • VAR3 DB ? • … • MOV AX,VAR3-VAR2 • MOV BL,17+12*4

  50. 例如:在地址表达式中常用的形式是:变量名+/-数值量例如:在地址表达式中常用的形式是:变量名+/-数值量 • MOV  AL,  DA1+1 • AND DA1-1 ,0FH

More Related