微机原理汇编语言-课件·PPT
合集下载
微机原理课件第四章 汇编语言程序设计

9
4-1 汇编语言程序格式
MASM中可使用的语句分成两类:指令性语句和伪指令语句。 一、指令性语句 • 特点:与机器指令相对应,汇编时产生目标代码。 • 标号:指令助记符 操作数,操作数 ;注释 ①标号:表示本指令语句的符号地址,后跟冒号“:”,用 作转移的目标地址; ②指令助记符:指出指令的操作类型,由英文字母缩写而成; ③操作数:指明参加指令运算的数据,有无操作数、单操作 数和双操作数之分,其中双操作数之间用逗号“,”分隔, 操作数与指令助记符之间用空格隔开; ④注释:用来说明一条指令或一段程序的功能,前面以分号 “;”为标记,汇编程序对注释不进行汇编,增加可读性 • 其中指令助记符是关键字,不可省略,其余部分均可省略。
20
例:N1 DB 15H,36H N2 DW 1122H,3344H MOV AX, WORD PTR N1 执行后:AX=3615H MOV BL, BYTE PTR N2 执行后:BL=22H MOV AX, WORD PTR N1+1 执行后:AX=2236H 注:若符号地址出现在操作数中,其类型为DB、DW所定义的 类型(如直接寻址、寄存器相对寻址、相对基址变址寻 址),如类型不匹配汇编时提示Warning Error:Operand types must match 或 Illegal size for operand;若存 储器操作数中不包含符号地址(如寄存器间接寻址等), 则该操作数的类型不确定,指令中的另一操作数必须明确 类型,否则汇编时提示Severe Error:Operand must have size. 例:LEA BX,N1之后 CMP [BX],10H 或 INC [BX]均出错。
10
二、伪指令语句 • 特点:没有对应的机器指令(本身不产生目标代码),只 为汇编程序提供汇编信息。 • 格式: 名字 伪指令指示符 操作数,操作数 ;注释 ①名字:给伪指令取的名称,用符号地址表示,名字后不带 冒号“:”,只用空格符与伪指令指示符相分隔; ②伪指令指示符:是MASM规定的符号,明确不同的操作; ③操作数:规定同指令性语句,区别在于操作数可能多于2 个; ④注释:规定同指令性语句 • 其中不可省略的部分是伪指令指示符,其余均可缺省。 三、数据项 • 操作数的三种基本数据项:常数、变量、标号
4-1 汇编语言程序格式
MASM中可使用的语句分成两类:指令性语句和伪指令语句。 一、指令性语句 • 特点:与机器指令相对应,汇编时产生目标代码。 • 标号:指令助记符 操作数,操作数 ;注释 ①标号:表示本指令语句的符号地址,后跟冒号“:”,用 作转移的目标地址; ②指令助记符:指出指令的操作类型,由英文字母缩写而成; ③操作数:指明参加指令运算的数据,有无操作数、单操作 数和双操作数之分,其中双操作数之间用逗号“,”分隔, 操作数与指令助记符之间用空格隔开; ④注释:用来说明一条指令或一段程序的功能,前面以分号 “;”为标记,汇编程序对注释不进行汇编,增加可读性 • 其中指令助记符是关键字,不可省略,其余部分均可省略。
20
例:N1 DB 15H,36H N2 DW 1122H,3344H MOV AX, WORD PTR N1 执行后:AX=3615H MOV BL, BYTE PTR N2 执行后:BL=22H MOV AX, WORD PTR N1+1 执行后:AX=2236H 注:若符号地址出现在操作数中,其类型为DB、DW所定义的 类型(如直接寻址、寄存器相对寻址、相对基址变址寻 址),如类型不匹配汇编时提示Warning Error:Operand types must match 或 Illegal size for operand;若存 储器操作数中不包含符号地址(如寄存器间接寻址等), 则该操作数的类型不确定,指令中的另一操作数必须明确 类型,否则汇编时提示Severe Error:Operand must have size. 例:LEA BX,N1之后 CMP [BX],10H 或 INC [BX]均出错。
10
二、伪指令语句 • 特点:没有对应的机器指令(本身不产生目标代码),只 为汇编程序提供汇编信息。 • 格式: 名字 伪指令指示符 操作数,操作数 ;注释 ①名字:给伪指令取的名称,用符号地址表示,名字后不带 冒号“:”,只用空格符与伪指令指示符相分隔; ②伪指令指示符:是MASM规定的符号,明确不同的操作; ③操作数:规定同指令性语句,区别在于操作数可能多于2 个; ④注释:规定同指令性语句 • 其中不可省略的部分是伪指令指示符,其余均可缺省。 三、数据项 • 操作数的三种基本数据项:常数、变量、标号
微机原理第五章汇编语言程序的设计课件

DB:定义字节变量,即其后的每个操作数均占1个字节; DW:定义字变量,即其后的每个操作数均占2个字节; DD:定义双字变量,即其后的每个操作数均占4个字节; DQ:定义4字变量,即其后的每个操作数均占8个字节; DT:定义10字节变量,即其后的每个操作数均占10个字节。 注意: 存放多字节数据时,数据高字节存放在高地址单元,低字 节存放在低地址单元。
汇编语句使用说明(续)
汇编语言中的常量与变量
常量:汇编中允许的常量有整数常量和字符串常量两种。 变量:汇编语言中的变量用来表示存放在内存中操作数,它 的值是可以改变的,变量的值就是操作数在内存中首字节的地 址,变量要事先定义才能使用。对于变量,类型属性说明变量在 内存中占多少个字节,其属性有BYTE(字节)、WORD(字)、 DOUBLE WORD(双字)3种。
☆ 变量定义伪指令
初值表给出变量的初始化值,有多个值时用逗号分隔。 初始化值可以是数值常数,也可以是表达式、?,还可以 由$、重复操作符DUP组成。其中: ?表示未赋初值; $ 表示将要分配的内存单元的偏移地址; DUP表示重复初值。 格式为:重复次数 DUP(重复参数) 说明:重复参数可以是多个,之间用逗号间隔。 举例:2 DUP(1,2) ;等价于1,2,1,2
☆ 常量--整数常量
字符串常量是由单引号或双引号括起来的单个字符或多个字符构成的。汇编程序把引号中的字符翻译成它的ASCII码值。如:‘A’(等于41H)、‘BC’(等于4243H)、“HELLO”等。
☆ 常量—字符串常量
汇编语言中的运算符与表达式
运算符:汇编中的运算符分为6大类,它们是:算术运算符、 移位运算符、逻辑运算符、关系运算符、分析运算符、合成运算 符(见课本P131表5-1)。 表达式:表达式是常数、寄存器、标号、变量与一些运算 符和操作码相组合的序列。 表达式的运算不由CPU完成,而是在程序汇编过程中进行 计算确定,并将表达式的结果作为操作数参与指令所规定的操 作。 当各种运算符同时出现在同一表达式中时,按照运算符的 优先级进行计算,对于优先级相同的运算符,按照从左到右的 顺序进行计算(见课本P132表5-2)。
汇编语句使用说明(续)
汇编语言中的常量与变量
常量:汇编中允许的常量有整数常量和字符串常量两种。 变量:汇编语言中的变量用来表示存放在内存中操作数,它 的值是可以改变的,变量的值就是操作数在内存中首字节的地 址,变量要事先定义才能使用。对于变量,类型属性说明变量在 内存中占多少个字节,其属性有BYTE(字节)、WORD(字)、 DOUBLE WORD(双字)3种。
☆ 变量定义伪指令
初值表给出变量的初始化值,有多个值时用逗号分隔。 初始化值可以是数值常数,也可以是表达式、?,还可以 由$、重复操作符DUP组成。其中: ?表示未赋初值; $ 表示将要分配的内存单元的偏移地址; DUP表示重复初值。 格式为:重复次数 DUP(重复参数) 说明:重复参数可以是多个,之间用逗号间隔。 举例:2 DUP(1,2) ;等价于1,2,1,2
☆ 常量--整数常量
字符串常量是由单引号或双引号括起来的单个字符或多个字符构成的。汇编程序把引号中的字符翻译成它的ASCII码值。如:‘A’(等于41H)、‘BC’(等于4243H)、“HELLO”等。
☆ 常量—字符串常量
汇编语言中的运算符与表达式
运算符:汇编中的运算符分为6大类,它们是:算术运算符、 移位运算符、逻辑运算符、关系运算符、分析运算符、合成运算 符(见课本P131表5-1)。 表达式:表达式是常数、寄存器、标号、变量与一些运算 符和操作码相组合的序列。 表达式的运算不由CPU完成,而是在程序汇编过程中进行 计算确定,并将表达式的结果作为操作数参与指令所规定的操 作。 当各种运算符同时出现在同一表达式中时,按照运算符的 优先级进行计算,对于优先级相同的运算符,按照从左到右的 顺序进行计算(见课本P132表5-2)。
微机原理微机原理与汇编语言PPT课件

微机原理与汇编语言
授课班级:通信04级
信电学院 2006.8
主要内容:
本课程紧密结合电子信息专业的特点,围绕微型计算机原理 和应用主题,以Intel8086CPU为主线,系统介绍了微型计算机的 基本知识、基本组成、体系结构、工作模式,介绍了8086CPU的 指令系统、汇编语言及程序设计方法和技巧,存储器的组成和I/O 接口扩展方法,微机的中断结构、工作过程,从而使学生能较清 楚的了解微机的结构与工作流程,建立起系统的概念。
第一代微处理器:1971年Intel公司设计了4位微处理器4004、 4040和早期的8位微处理器8008。(集成度为:2000管/片, 时钟频率为:1MHz,平均指令执行时间为20μs,数据总线 宽度:4位。 ) 第二代微处理器:1973年12月Intel公司研制成功了8080。 (集成度为:5000管/片,时钟频率为:2----4MHz,平均指 令执行时间为1----2μs ,数据总线宽度:8位。 )
第三代微处理器:1978年制造了8086和1979年研制了8088, 1983年又制造了全16位的80286。(集成度为:2----6万管 /片,时钟频率为: 4----8MHz,平均指令执行时间为 0.5μs ,数据总线宽度:16位。 ) 第四代微处理器:1985年Intel公司制造出32位字长的微处 理器80386。 (集成度为:27.5万管/片,时钟频率为: 12.5----33MHz,平均指令执行时间为0.1μs ,数据总线宽 度:32位)。1989年4月又研制成功80486。
本课程系统介绍了微机中的常用接口原理和应用技术,包括 七大接口芯片:并行接口8255A、串行接口8251A、计数器/定时 器8253、中断控制器8259A、A/D(ADC0809)、D/A (DAC0832)、DMA(8237)、人机接口(键盘与显示器接口) 的结构原理与应用。在此基础上,对现代微机系统中涉及的总线 技术、高速缓存技术、数据传输方法、高性能计算机的体系结构 和主要技术作了简要介绍。
授课班级:通信04级
信电学院 2006.8
主要内容:
本课程紧密结合电子信息专业的特点,围绕微型计算机原理 和应用主题,以Intel8086CPU为主线,系统介绍了微型计算机的 基本知识、基本组成、体系结构、工作模式,介绍了8086CPU的 指令系统、汇编语言及程序设计方法和技巧,存储器的组成和I/O 接口扩展方法,微机的中断结构、工作过程,从而使学生能较清 楚的了解微机的结构与工作流程,建立起系统的概念。
第一代微处理器:1971年Intel公司设计了4位微处理器4004、 4040和早期的8位微处理器8008。(集成度为:2000管/片, 时钟频率为:1MHz,平均指令执行时间为20μs,数据总线 宽度:4位。 ) 第二代微处理器:1973年12月Intel公司研制成功了8080。 (集成度为:5000管/片,时钟频率为:2----4MHz,平均指 令执行时间为1----2μs ,数据总线宽度:8位。 )
第三代微处理器:1978年制造了8086和1979年研制了8088, 1983年又制造了全16位的80286。(集成度为:2----6万管 /片,时钟频率为: 4----8MHz,平均指令执行时间为 0.5μs ,数据总线宽度:16位。 ) 第四代微处理器:1985年Intel公司制造出32位字长的微处 理器80386。 (集成度为:27.5万管/片,时钟频率为: 12.5----33MHz,平均指令执行时间为0.1μs ,数据总线宽 度:32位)。1989年4月又研制成功80486。
本课程系统介绍了微机中的常用接口原理和应用技术,包括 七大接口芯片:并行接口8255A、串行接口8251A、计数器/定时 器8253、中断控制器8259A、A/D(ADC0809)、D/A (DAC0832)、DMA(8237)、人机接口(键盘与显示器接口) 的结构原理与应用。在此基础上,对现代微机系统中涉及的总线 技术、高速缓存技术、数据传输方法、高性能计算机的体系结构 和主要技术作了简要介绍。
微机原理汇编语言程序设计ppt课件

汇编后源操作数被翻译为:3F00H, 所以上述指令与以下指令等价: AND AX, 3F00H
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式—分析运算符
分析运算符包括:SEG、OFFSET SEG:取变量/标号的段地址 OFFSET:取变量/标号的偏移地址
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式
表达式由标号、常量、变量等加上必要的运算符构成 有数字表达式和地址表达式两种 汇编时按优先规则对表达式进行计算,计算出具体的数值
ASSUME DS:DATA, ES:EXTRA代码段 CODE ENDS
MAIN PROC FAR
; ----------------------------------------------
MOV AX, DATA
END MAIN
MOV DS, AX
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.1 常量
常量操作数:
数值常数:11001000B,0FA21H,329D(329) 字符常数:‘ABCD’ (41H 42H 43H 44H)
例:
MOV AX, 0FA21H VAR DB 329 STR DB ‘ABCD’
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式—分析运算符
分析运算符包括:SEG、OFFSET SEG:取变量/标号的段地址 OFFSET:取变量/标号的偏移地址
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式
表达式由标号、常量、变量等加上必要的运算符构成 有数字表达式和地址表达式两种 汇编时按优先规则对表达式进行计算,计算出具体的数值
ASSUME DS:DATA, ES:EXTRA代码段 CODE ENDS
MAIN PROC FAR
; ----------------------------------------------
MOV AX, DATA
END MAIN
MOV DS, AX
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.1 常量
常量操作数:
数值常数:11001000B,0FA21H,329D(329) 字符常数:‘ABCD’ (41H 42H 43H 44H)
例:
MOV AX, 0FA21H VAR DB 329 STR DB ‘ABCD’
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
微机原理第五章:汇编语言程序设计.ppt

5.1.2 汇编语言程序的语法规则
一、汇编语言语基本语法(词法)
5.程序结构 ★ 汇编语言源程序的结构是段式结构。 ★ 一个源程序最多有 四种段:
即:代码段、数据段、堆栈段、扩展段。 ★ 每种段在源程序中的先后顺序(位置)可任意。但个数不受限。 ★ 每个段必须有段名。 ★ 指令语句必须安排在代码段中,代码段中可以定义过程。
否则就会出错。
5.1.2 汇编语言程序的语法规则
一、汇编语言语基本语法(词法)
基本元素
字符 词法规则 单词 句法规则 语句 结构规则 源程序
操作符 助记符 标识符等
指示性语句 指令性语句
完成某种 功能的
用户软件
★ 汇编语言源程序是汇编语言语句的有序集合; ★ 语句是由一个具有独立定义的单词按一定的句法组合而成; ★ 而单词是语言的基本元素——字符按一定的词法规则构成。
☆ 名字和标号一样,都是符号地址,反映所属对象的逻辑地址EA; ☆ 不同的伪指令,其名字的叫法也不同:
● 变量名:所定义的存储单元在数据段中的地址。 ● 段名:表示相应段的段首地址(段基址)。 ● 过程名:表示相应子程序在代码段中的起始地址。
5.1.2 汇编语言程序的语法规则
★ 标号和名字一经定义,便具有以下三种属性值: (1)段值:所属段的段基址。 (2)偏移值:在段内的偏地址。 (3)类型值: 标号、过程名具有 NEAR 和 FAR 类型。 变量名的类型有:BYTE,WORD,DWORD。
第五章 汇编语言程序设计
内容摘要:
★ 从汇编语言程序的基本概念出发,介绍汇编语言语法规则、汇 编语言程序段结构、伪指令、上机操作环境等基础知识。
★ 通过对程序的基本结构 —— 顺序、分支、循环、子程序结构 的介绍,举例讨论其程序设计方法和技巧。
微机原理第4章汇编语言.ppt

BYTE=1;WORD=2; DW=4;NEAR=-1;FAR=-2
n DUP(?)=?
源程序格式 操作数
分析运算符 TYPE VAR DW ?;变量VAR的类型为字 2 ARRAY DD 10 DUP(?);
变量ARRAY的类型为双字:type ARRAY= 4 STR DB 'This is a test';变量STR的类型为字节 1
程序设计语言与汇编语言
汇编程序获取
(1)机器码Disassemble Sourcer /debuger (2)C ASM CL /Fa开关; TCC ---B ; (3)ASM 编程 (高级语言嵌入小汇编程序模块)
MASM TASM ASM; 汇编程序(MS-MASM 4.0/5.0 6.11/6.14/6.15) ASM86(小,无宏MICRO支持) TASM5.0)
SEGMENT / ENDS NAME SEGMENT [定位类型[,组合类型[,‘类别’..]]]
NONE 不组合 PUBLIC 多个模块相同段名装配合一 STACK 堆栈,同Public( 相同段名装配合一)
EXE文件装入时SP初值=末指针+1(栈底) COMMON 公用 不同程序遇到同名时同一地址装入,覆盖/重叠- -临时变量,以最长为界 PRIVATE: 表示本段与其他段组合无关
;MS-DOS 模板语句
PUSH DS
XOR AX,AX ;=MOV AX,0
PUSH AX
;保存返回指针
START:MOV AX,DATA
MOV DS,AX
:
RET
;返回原DS:0000HMS-DOS
MAIN ENDP
汇编语言源程序格式
分段结构 指定堆栈、数据、代码段