1 / 96

第五章 汇编语言程序设计

第五章 汇编语言程序设计. 第五章是重点章节. 5.1 概述 5.2 汇编语言语句 5.3 汇编语言数据 5.4 伪指令语句 5.5 宏指令语句 5.6 顺序程序设计 5.7 分枝程序设计. 5.8 循环程序设计 5.9 自程序设计 5.10 实用程序设计示例 5.11 汇编语言程序的开发. 第五章的内容. 5.1 概述. 几个重要概念:  CPU 的核心功能是实现指令功能,使计算机完成各种各样的基本操作。 能完成一定的运算与操作功能的指令序列称为程序。 能让计算机识别和执行的程序只能是二进制代码组成的指令序列,即机器语言程序。.

albina
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. 5.1概述 5.2汇编语言语句 5.3汇编语言数据 5.4伪指令语句 5.5宏指令语句 5.6顺序程序设计 5.7分枝程序设计 5.8循环程序设计 5.9自程序设计 5.10实用程序设计示例 5.11汇编语言程序的开发 第五章的内容

  3. 5.1概述 • 几个重要概念: • CPU的核心功能是实现指令功能,使计算机完成各种各样的基本操作。 • 能完成一定的运算与操作功能的指令序列称为程序。 • 能让计算机识别和执行的程序只能是二进制代码组成的指令序列,即机器语言程序。

  4. 例5-1 A+B S= Ⅹ C A-B

  5. 5.2汇编语言语句---(本节内容) 伪指令和指令的通用格式: • 1.名字字段(Name Field) 1~31 名字字段的三个注意事项 开头 • 2.操作符字段(Operator Field) 保留字 • 3.操作数字段(Operand Field) • 4.注释字段(Comment Field) • A: MOV AX,BX ;把BX的内容给AX

  6. 5.3汇编语言数据---(本节内容) 5.3.1符号定义语句 5.3.2数据定义语句 5.3.3数据 5.3.4运算符

  7. 5.3.1符号定义语句1 1.等值伪指令 格式: 符号 EQU 表达式/符号 (1)常数或数值表达式 例如:COUNT EQU 15 COMPUTER EQU 15*5+46

  8. (2)地址表达式 • 例如: • ADDR1 EQU DS:[BP] • ADDR_W EQU WORD PTR[BX] • ADDR_B EQU BYTE PTR[BX]

  9. (3)变量名、标号或指令助记符 • NUM1 EQU COUNT1 • BEING EQU START • STOD EQU DAA • 注:等值伪指令语句仅在汇编源程序时作为替代符号用,不产生任何目标代码,也不分配存储单元。

  10. 在同一源程序中,同一符号不能用EQU伪指令重新定义:在同一源程序中,同一符号不能用EQU伪指令重新定义: • BTOD EQU DAA • NUM EQU 100H • . • . • BTOD EQU AAA • NUM EQU 200H

  11. 2.等号伪指令 格式: 符号=表达式/符号 (1)将符号重新定义 COUNT=15H NUM=100H . COUNT=30H NUM=NUM+100H

  12. (2)定义别名 • NUM1=COUNT1 • BEING=START • BTOD=DAA (X)

  13. 5.3 汇编语言数据 5.3.1符号定义语句2 1.等值伪指令 符号 EQU 表达式/符号 2.等号伪指令 符号=表达式/符号 上述两者之间的区别: 1.等号伪指令可以重新定义符号 2.等号伪指令不可以重新定义汇编指令,EQU可以。

  14. -- 5.3.2数据定义语句---使用格式 DB 变量名 DW 表达式1,表达式2 DD

  15. DATA SEGMENT VAR1 DB 12H VAR2 DW 1234H VAR3 DD 12345678H DATA ENDS VAR1 VAR2 VAR3

  16. --5.3.2数据定义语句 段属性(SEG) 变量的三个属性: 偏移量属性(OFFSET) 类型属性(TYPE) 1.数值表达式 表达式的类型 2.?表达式 3.字符串表达式 4.带DUP的表达式

  17. 5.3.2数据定义语句---表达式使用1 1.数值表达式 例: DA_B1 DB 50 DA_B2 DB 12H,34H,56H DA_W1 DW 1234H,2345H DA_W2 DD 4567H,6789H

  18. 1.数值表达式 例: DA_B1 DB 50 DA_B2 DB 12H,34H,56H DA_W1 DW 1234H DA_W2 DW 1234H,5678H,9ABCH DA_B1 DA_B2 DA_B2+1 DA_B2+2 DA_W1 DA_W2 DA_W2+2 DA_W2+4

  19. 5.3.2数据定义语句---表达式使用2 2. ?表达式 例: age DB ? age1 DB ?,?,? data1 DW ?,? data2 DD ?,?

  20. 5.3.2数据定义语句---表达式使用3 3. 字符串表达式 (DB<256,DW/DD 1~2个) 例: STRING1 DB ‘ABCDEF’ STRING2 DW ‘AB’,’CD’,’EF’ STRING3 DD ‘AB’,’CD’

  21. B A B A B A C D D C F D E C F E STRING3 DD ‘AB’,’CD’ STRING1 DB ‘ABCDEF’ STRING2 DW ‘AB’,’CD’,’EF’

  22. 5.3.2数据定义语句---表达式使用4 4. 带DUP表达式 例: DB 变量名 DW 表达式1 DUP(表达式2) DD DUP可以嵌套

  23. NU_B1 DB 10H DUP(?) 10H

  24. NU_B2 DB 20H DUP(‘ABCD’) A B C D A 80H B C D

  25. NU_W1 DW 20H DUP(10H) 20H*2=40H

  26. NU_B3 DB 10H DUP(5 DUP(4),10H) 10H*6=60H

  27. 5.3汇编语言数据--- 5.3.3数据1 1.数值常数二、八、十、十六进制 2.字符常数 一、常数

  28. 常数的应用:(1)作立即数操作数 • MOV AL,0ABH • MOV BX,78FCH • MOV AL,’A’ • MOV BX,’AB’

  29. (2)作位移量 • MOV AL,DS:[140H] • MOV BX,45H[SI] • MOV 0FEH[BP],AL • MOV 1234H[BX][DI],AX

  30. (3)在伪指令中作为赋值数据 • COUNT EQU 100 • DB 12H • DW 1234H • DB ‘ABCDEF’

  31. 5.3汇编语言数据--- 5.3.3数据2 二、寄存器操作数 三、存贮器操作数 1.变量 (1)VAR DB 40H DUP(12H)

  32. 寻址方式中使用变量 • 直接寻址:VAR • VAR+10H • 变址寻址:VAR[SI] • VAR+5[DI] • 基址寻址:VAR[BX] • VAR+10[BP] • 基址变址寻址:VAR[BX][SI] • VAR+20[BX][DI]

  33. (2) VAR1 DB 10H DUP(0) VAR2 DW 10H DUP(‘AB’) ADR1 DW VAR2 ADR2 DD VAR2

  34. 5.3汇编语言数据--- 5.3.3数据3 2.标号 (1)段属性 标号的三个属性 (2)偏移量属性 near (3)类型属性far

  35. 标号类型属性的设置方法: • (1)隐含方式,当某指令选定一标号后,该标号就隐含为NEAR属性。例如: • NEXT: MOV AX,1234H • (2)用标示伪指令LABEL设置类型属性。 • LABEL为指令语句格式是: • 名字 LABEL 类型

  36. 5.3汇编语言数据--- 5.3.3数据4 Label的使用 a.与指令语句连用 例:SUB1_FARLABELFAR SUB1:MOV AX,789AH b.与数据定义语句连用 例:DA_B1LABEL BYTE DA_W1DW 10H DUP(1234H)

  37. 5.3汇编语言数据--- 5.3.4运算符 1.算术运算符

  38. ORG 30H DA1 DB ‘ABCDEFGH’ DA2 DW 1234H,’EF’ COUNT=DA2 - DA1 30H A 31H B 32H C 33H D 34H E 35H F G 36H 37H H 38H 39H F 3AH 3BH E

  39. 5.3汇编语言数据--- 5.3.4运算符 2.逻辑运算符

  40. 5.3汇编语言数据--- 5.3.4运算符 3.关系运算符

  41. 4.数值返回运算符 (1)SEG和OFFSET运算符 DATA SEGMENT ORG 30H DA1 DB 20H DUP(?) DA2 DW DA1 : DATA ENDS : MOV AX,SEG DA1 MOV AX,5189H MOV BX,OFFSET DA1 MOV BX,30H MOV CX,DA2 MOV CX,30H LEA DX,DA1 MOV DX,30H

  42. 5.3汇编语言数据--- 5.3.4运算符 (2)TYPE运算符

  43. (3)LENGTH运算符和SIZE运算符 LENGTH运算符和SIZE运算符的具体运算规则是:如果变量是用重复操作符DUP定义的,那末,运算符LENGTH的运算结果是外层DUP的给定值(即外层重复次数),如果没有用DUP定义的变量,运算结果总是1,而运算符SIZE是LENGTH和TYPE两个运算结果的乘积。

  44. DATA SEGMENT VAR1 DB 10H,20H,30H,40H VAR2 DW 10H DUP(‘4’,4 DUP(2)) VAR3 DB ‘COMPUTER’ DATA ENDS : MOV AL,TYPE VAR1 ; AL=1 MOV AH,LENGTH VAR1 ; AH=1 MOV BL,SIZE VAR1 ; BL=1 MOV BH,TYPE VAR2 ; BH=2 MOV CL,LENGTH VAR2 ;CL=10H MOV CH,SIZE VAR2 ;CH=20H MOV DL,LENGTH VAR3 ; DL=1 MOV DH,SIZE VAR3 ; DH=1

  45. 5.属性运算符PTR 格式:<类型> PTR <地址表达式> DA_BYTE DB 10H DUP(0) DA_WORD DW 10H DUP(0) : MOV WORD PTR DA_BYTE[SI],AX MOV BYTE PTR DA_WORD[SI],BL INC BYTE PTR [BX] SUB WORD PTR [SI],30H JMP FAR PTR SUB1

  46. 5.3汇编语言数据--- 5.3.4运算符 6.运算符优先级

  47. 5.4伪指令语句(内容) 5.4.1段定义语句 5.4.2过程定义语句 5.4.3定位语句和位置计数器 5.4.4偶地址控制语句 5.4.5程序标题语句

More Related