学习要求 ●掌握16位指令系统中常用指令的使用。 ●掌握源程序中常用的伪指令。 ●掌握宏汇编源程序的结构及其编程方法 ●掌握宏汇编语言上机调试过程
学习要求 ● 掌握16位指令系统中常用指令的使用。 ● 掌握源程序中常用的伪指令。 ● 掌握宏汇编源程序的结构及其编程方法。 ● 掌握宏汇编语言上机调试过程
3116位汇编程序设计概述 在DOS下用汇编语言开发程序的工具是 MaSm和Tasm。Masm常用的有Masm611 和Masm614两个版本,Tasm是 Borland 公司提供的工具。 用 Masm exe来将源程序生成目标文件。 ML.eXe既可以产生目标文件,也可以产 生可执行文件。调试可执行文件用 Debug. exe或 CVexe
3.1 16位汇编程序设计概述 ◼ 在DOS下用汇编语言开发程序的工具是 Masm和Tasm。Masm常用的有Masm611 和Masm614两个版本,Tasm是Borland 公司提供的工具。 ◼ 用Masm.exe来将源程序生成目标文件。 ML.exe既可以产生目标文件,也可以产 生可执行文件。调试可执行文件用 Debug.exe或CV.exe
汇编语言程序的特点 编程的第一步是编写源程序。 用记事本等一切可以以纯文本方式编辑 保存文件的工具进行。文件必须保存为 扩展名为asm的文件,且文件名不能超过 8个ASCI码字符
汇编语言程序的特点 ◼ 编程的第一步是编写源程序。 用记事本等一切可以以纯文本方式编辑 保存文件的工具进行。文件必须保存为 扩展名为asm的文件,且文件名不能超过 8个ASCII码字符
汇编语言程序的特点 ■源程序中要使用指令,指令是最小的代 码单元。指令分为两种,一种叫硬指令, 另一种叫伪指令。 硬指令是机器事实上存在的指令 例如: MOV AX,1234 在源程序中写下这条指令,生成可执行 文件后,反汇编仍然存在这条指令
汇编语言程序的特点 ◼ 源程序中要使用指令,指令是最小的代 码单元。指令分为两种,一种叫硬指令, 另一种叫伪指令。 ◼ 硬指令是机器事实上存在的指令 例如: MOV AX,1234 在源程序中写下这条指令,生成可执行 文件后,反汇编仍然存在这条指令
汇编语言程序的特点 伪指令是告诉编译器的一些说明性语句, 编译器承认,而CPU中无此指令。 例如:X1DW0 这是一条用伪指令DW定义字变量的 语句,编译器会将它在数据段中产生 个字的空间且初始化为0。程序中并没有 X1这个变量,其它指令操作该变量都会 被编译成从Ⅺ1的地址读写数据
汇编语言程序的特点 ◼ 伪指令是告诉编译器的一些说明性语句, 编译器承认,而CPU中无此指令。 例如: X1 DW 0 这是一条用伪指令DW定义字变量的 语句,编译器会将它在数据段中产生一 个字的空间且初始化为0。程序中并没有 X1这个变量,其它指令操作该变量都会 被编译成从X1的地址读写数据
指令寻址方式 从8086的机器代码格式入手,论述: 立即数寻址方式 寄存器寻址方式 存储器寻址方式 ■进而熟悉8086汇编语言指令格式,尤其是其中 操作数的表达方法;为展开8086指令系统做好 准备
指令寻址方式 ◼ 从8086的机器代码格式入手,论述: ◼ 立即数寻址方式 ◼ 寄存器寻址方式 ◼ 存储器寻址方式 ◼ 进而熟悉8086汇编语言指令格式,尤其是其中 操作数的表达方法;为展开8086指令系统做好 准备
指令的组成 操作码操作数 指令由操作码和操作数两部分组成 操作码说眀计算杋要执行哪种操作,如传送、运算 移位、跳转等操作,它是指令中不可缺少的组成部 分 操作数是指令执行的参与者,即各种操作的对象 ■有些指令不需要操作数,通常的指令都有一个或两 个操作数,也有个别指令有3个甚至4个操作数
指令的组成 ◼ 指令由操作码和操作数两部分组成 ◼ 操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,它是指令中不可缺少的组成部 分 ◼ 操作数是指令执行的参与者,即各种操作的对象 ◼ 有些指令不需要操作数,通常的指令都有一个或两 个操作数,也有个别指令有3个甚至4个操作数 操作码 操作数
指令的操作码和操作数 每种指令的操作码: ■用一个唯一的助记符表示(指令功能的英文缩写) ■对应着机器指令的一个二进制编码 指令中的操作数: 可以是一个具体的数值 可以是存放数据的奇存器 或指明数据在主存位置的存储器地址
指令的操作码和操作数 ◼ 每种指令的操作码: ◼ 用一个唯一的助记符表示(指令功能的英文缩写) ◼ 对应着机器指令的一个二进制编码 ◼ 指令中的操作数: ◼ 可以是一个具体的数值 ◼ 可以是存放数据的寄存器 ◼ 或指明数据在主存位置的存储器地址
寻址方式 指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 操作数釆取哪一种寻址方式,会影响机器运行 的速度和效率
寻址方式 ◼ 指令系统设计了多种操作数的来源 ◼ 寻找操作数的过程就是操作数的寻址 ◼ 操作数采取哪一种寻址方式,会影响机器运行 的速度和效率
标准机器代码示例 1/2字节 0/1字节 0/1/2字节 0/1/2字节 操作码 mod reg r/m 位移量 立即数 moax,[BP+0];机器代码是8B4600 前一个字节8B是操作码(含W=1表示字操作) 中间一个字节46(01000110)是“ mod reg /m”字节 reg=000表示目的操作数为AX mod=01和r/m=110表示源操作数为[BP+D8 ■最后一个字节就是8位位移量(D8=)00
标准机器代码示例 mov ax,[BP+0] ;机器代码是 8B 46 00 ◼ 前一个字节8B是操作码(含w=1表示字操作) ◼ 中间一个字节46(01 000 110)是 “mod reg r/m”字节 ◼ reg=000表示目的操作数为AX ◼ mod=01和r/m=110表示源操作数为[BP+D8] ◼ 最后一个字节就是8位位移量〔D8=〕00 1/2字节 0/1字节 0/1/2字节 0/1/2字节 操作码 mod reg r/m 位移量 立即数