微机原理第4章-汇编语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

源程序格式 操作数
分析运算符和合成运算符 用以分析提取一个存储器操作数的属性,如段、 分析运算符 用以分析提取一个存储器操作数的属性,如段、 偏移量或类型等。 偏移量或类型等 。 OFFSET、 SEG、 TYPE、 SIZE、 LENGTH; 、 、 、 、 ; 可规定存储器操作数的某个属性,例如类型。 合成运算符 可规定存储器操作数的某个属性,例如类型。 PTR、THIS、 PTR、THIS、SHORT (类似类型强制转换) 类似类型强制转换) INC WORD PTR [BX] ADD BYTE PTR[ 1000H], 38H
标识符( 字母+字母 数字/_,<32个) 标识符(Identifiers字母 字母 数字 字母 字母/数字 个 界符( 分隔两部分) 界符(Delimiters分隔两部分) 空格 :, 分隔两部分 常数( 常数(Const.s) 1000H 11101000B 0ABCDH ) 注释( 注释(Comments) ;分号后 大段语句 .Comment @ / @ ) 分号后 大段语句:
计算机程序设计语言 计算机程序设计语言 程序 机器语言、 机器语言、汇编语言和高级语言 高级语言( 高级语言(High Level Language): 通用,一般不要求了 ) 通用, 解结构原理。易读,易编写,调试, 解结构原理。易读,易编写,调试,简洁 BASIC,….,VC(++)/VB/DELPHI,JAVA,C#,HTML , , ==> 机器语言(执行)---翻译 编译 翻译/编译 机器语言(执行) 翻译
汇编语言(Assembly Language)---面向具体机器(CPU)语言 ,最接近于 面向具体机器( 汇编语言 ) 最接近于
机器语言的低级语言。借助于助记符编程,地址数据可符号化( 机器语言的低级语言。借助于助记符编程,地址数据可符号化(可读性提 ),编写 修改较方便。完整的语法,不易出错。 编写、 高),编写、修改较方便。完整的语法,不易出错。例: ADD AX,100 (05 64 00) JMP 1000:2000 (EA 00 20 00 10)
源程序格式 操作数
(2)寄存器 寄存器 8位: AL/AH, BH/BL, CH,CL,DH,DL 位 16位:AX/BX/CX/DX,SI/DI/BP/SP/ D/ES/CS 位 , (3)标号 (少用绝对地址,多用标号 维护,移植 标号 少用绝对地址,多用标号----维护 移植) 维护, (4)变量 变量 (5)表达式 表达式 内存数据区名, 内存数据区名 类型 B/W/DW/QW/TB (预编译/汇编处理) 汇编处理) 预编译 汇编处理
特点:汇编语言程序 机器代码一一对应,程序流可控,速度快,用于编制 机器代码一一对应, 特点:汇编语言程序----机器代码一一对应 程序流可控,速度快,
系统程序、实时通信 控制 处理。 面向具体机器 控制/处理 面向具体机器( 系统程序、实时通信/控制 处理。---面向具体机器(CPU)语言,移植性差, )语言,移植性差, 不通用。 不通用。
汇编程序用途
段名
汇编语言源程序格式(例 汇编语言源程序格式 例1)
段说明保留字 ;定义数据段
DATA SEGMENT
DATA1 DB 0F8H,60H, 0ACH,74H,3BH;被加数 , , , ; DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数 , , , , ; DATA ENDS;数据段结束 ; CODE SEGMENT;定义代码段 ; ASSUME CS:CODE,DS:DATA;告诉汇编程序段范围 : , : ; START: MOV AX,DATA : , 标号 MOV DS,AX , MOV CX,5 , MOV SI,0 , ;初始化DS 初始化 ;循环次数送CX 循环次数送 ;置SI初值为零 初值为零
段 过程 变量 标记名 称
第二节 汇编语言数据和表达式
助记符和伪操作 (Mnemonic & Pseudo Operation) 指令助记符 MOV,ADD,…. , , 指示性操作 DB,DW,SEGMENT,ENDS,ASSUME,END , , , , , 操作数( 操作数(Operand)单/双/无,逗号隔开 ) 双无 ---常数 寄存器 标号 变量 表达式 常数/寄存器 标号/变量 常数 寄存器/标号 变量/表达式 (1)常数:xxxxD/B/H/O(Q),ASCII(‘A01’) 常数: 常数 ( ) ( ) 浮点数十进制(实数 浮点数十进制(实数100.2,1.33E-8) ) 浮点数十六进制(实数10A4FE87R---8短实 位 HEX长实 临实 短实/16位 长实/临实 浮点数十六进制 ( 实数 短实 长实 20位) 位
汇编语言源程序格式
标号( 指令的符号地址(可浮动) 标号(Label) xxxx: 指令的符号地址(可浮动) ) 段、偏移量、类型((NEAR)/FAR) 偏移量、类型 变量名/段名 过程名 指示性语句(可浮动) 变量名 段名/过程名 指示性语句(可浮动) 段名 过程名----指示性语句 ---无冒号 有规定 段、偏移量、类型 操作数 无冒号;---有规定 操作数) 无冒号 有规定----段 偏移量、类型(操作数 (BYTE/WORD/DWORD/QWORD/TBYTE(10)) ( ) 字节 字 双字 四字 十字节
解释程序( 编译程序( 解释程序(Interpreter)/编译程序(Compiler) ) 编译程序 ) (编译原理) 编译原理) C++编译 真实指令 JAVA编译 编译 编译 Java bytecode中间代码 虚拟机指令 JAVA解释器 中间代码 解释器
程序设计语言与汇编语言
机器语言 二进制表示的指令和数据序列--目标代码 二进制表示的指令和数据序列--目标代码 --
汇编语言源程序格式
分段结构
指定堆栈、数据、 指定堆栈、数据、代码段 ---SEGMENT---ENDS--(END结束?) ( 结束? 结束 运行/逻辑段 ?当前物理段(SS/CS/DS/ES)--运行 逻辑段 编程 当前物理段( ) 运行 逻辑段—编程
程序语句的类型和组成
基本单元:语句 指令性语句 指令性语句----CPU指令 指示性语句 指令/指示性语句 基本单元: 指令 ----伪操作(汇编辅助信息) 伪操作(汇编辅助信息) 伪操作 语句构成: 操作数] 语句构成:[name] Opcode/伪操作 [操作数 [;注释 伪操作 操作数 ;注释]
(3)ASM 编程 (高级语言嵌入小汇编程序模块 高级语言嵌入小汇编程序模块) 高级语言嵌入小汇编程序模块 MASM TASM ASM; 6.11/6.14/6.15)
汇编程序( 汇编程序(MS-MASM 4.0/5.0 ASM86(小,无宏MICRO支持 小 无宏 支持) 支持 TASM5.0) )
LOOP1:….(指令)/ DATA1 : (指令)
DB….( 伪操作 伪操作)
汇编语言源程序格式
程序语句表面上组成
保留字( 保留字(Reserved Words) ) SEGMENT ENDS OFFSET SIZE DB DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
源程序格式 操作数
OFFSET 可以得到一个标号或变量的偏移地址 定位后已知) 可以得到一个标号或变量的偏移地址(定位后已知 定位后已知 MOV SI,OFFSET DATA1 , LEA SI, DATA1[BX+100] SEG 可以得到一个标号或变量的段值 MOV AX,SEG ARRAY , MOV DS,AX , TYPE 结果 类型数值(与存储器操作数类型属性的对应) 结果=类型数值(与存储器操作数类型属性的对应) 类型数值 BYTE=1;WORD=2; DW=4;NEAR=- ;FAR=- = ; =-1; =-2 = ; = ; =- =- n DUP(?)=? ( LEA SI, DATAl
源程序格式 操作数
分析运算符 TYPE VAR DW ?;变量VAR的类型为字 2 变量 的类型为字
ARRAY DD 10 DUP(?); ( 变量ARRAY的类型为双字 的类型为双字:type ARRAY= 4 变量 的类型为双字 STR DB 'This is a test';变量STR的类型为字节 1 ;变量 的类型为字节 : MOV AX,TYPE VAR; (AX)2 ; ) MOV BX,TYPE ARRAY;(BX)4 ( ) MOV CX,TYPE STR; (CX) 1
CLC
; 清CF标志 标志
LOOPER:MOV AL,DATA2[SI];取一个字节加数 : , [ ] ADC DATA1[SI],AL;与被加数相加 , ; INC DEC SI CX ;SI加1指向下一字节 加 指向下一字节 ;计数器CX减1 计数器 减 ;不等于零,转LOOPER 不等于零, 实际? ;停止--实际?(INT21H) 停止 实际 ;代码段结束
汇编( 机器语言代码(目标程序)的过程。功能: 汇编(Assemble)源程序代码 机器语言代码(目标程序)的过程。功能: )
语法检查、翻译。汇编程序Assembler 机器汇编( 人工汇编)。交叉 语法检查、翻译。汇编程序 器汇编( 人工汇编)。交叉 )。 汇编—借助其它机器(如PC)汇编。 汇编 借助其它机器( 汇编。 汇编
反汇编( 指令代码 源程序) 代码( 反汇编(Dis-Assemble) 机器语言代码 指令代码(源程序 , 逆向工
程—Reverse Engineering) )
程序设计语言与汇编语言
汇编程序获取
(1)机器码 Disassemble Sourcer /debuger 机器码 (2)C ASM CL /Fa开关 TCC ---B ; 开关; 开关
变量地址+/-) 算术运算符 + - * / MOD (变量地址 ) 逻辑运算符 (位)AND/OR/XOR/NOT AND AL,100001B , AND AL, 100001B AND 1111101B ,
源程序格式 操作数
关系运算符 关系运算符有: (等于) 关系运算符有:EQ(等于),NE(不等),LT(小于),GT (不等) (小于) 大于) (大于),LE(小于或等于),GE(大于或等于)等。 (小于或等于) (大于或等于) 参与关系运算的必须是两个数值, 参与关系运算的必须是两个数值,或同一段中的两个存储单元 地址,但运算结果只可能是两个特定的数值之一: 地址 , 但运算结果只可能是两个特定的数值之一 : 当关系不成立 结果为0;当关系成立( 结果为0FFFFH。例 (假 )时, 结果为 ; 当关系成立( 真) 时 , 结果为 。 MOV AX, 如,MOV AX,4 EQ 3;关系不成立,故(AX)0 , ;关系不成立, , 4 NE 3;关系成立,故(AX)0FFFFH ;关系成立,
JNZ LOOPER (HLT) CODE ENDS
END START;源程序结束,指定起始地址标号 ;源程序结束,
汇编语言源程序格式( ) 汇编语言源程序格式(例2)
(PC台式计算机在 台式计算机在MS-DOS环境下的标准程序格式) 环境下的标准程序格式) 台式计算机在 环境下的标准程序格式 MAIN PROC FAR PUSH DS XOR AX,AX PUSH AX START:MOV AX,DATA MOV DS,AX : RET MAIN ENDP 返回原 ;返回原DS:0000H MS-DOS ;=MOV AX,0 ;保存返回指针 保存返回指针 ;MS-DOS 模板语句
秦红磊, 秦红磊,金天 bly
Language)
第一节. 第一节.程序设计语言与汇编语言 第二节. 第二节.汇编语言伪指令 第二节.汇编程序编辑、 第二节.汇编程序编辑、汇编与链接程序 第四节. 第四节.汇编语言程序设计
第一节 程序设计语言汇编语言
相关文档
最新文档