汇编语言——基础知识
目标
1、了解机器语言、汇编语言、汇编源程序、汇编程序、汇编、宏汇编程序等基本概念,正确认识学习汇编语言的重要性。
2、掌握8086处理器中各寄存器的符号表示形式、大小及主要用途。
3、理解主存的编址方式以及存储器物理地址形成的方式。
4、理解8086处理器关于使用堆栈的有关规定,掌握堆栈操作指令的功能以及使用格式。
5、掌握数值数据及字符数据在机内的表示形式、压缩BCD码和非压缩BCD码在机内的表示形式。
6、掌握标志寄存器中各标志位的置位方式。
三种语言的层次关系
机器语言
汇编语言
高级语言
机器指令
指挥计算机完成某一基本操作的命令。
格式:
操作码 地址码1 地址码2
例:将偏移地址为100的字存储单元中的内容加2,在回送到原存储单元中去的机器指令如下:
8306640002
其中8306H为 操作码
6400H 为 目的操作数
02H 为源操作数
指令系统
机器指令面向机器,每台计算机都规定了自己所特有的一定数量的基本指令,这批指令的全体即为该计算机的指令系统
汇编语言
用助记符表示机器指令的操作码;
用变量代替操作数的存放地址;
在指令前冠以标号,用来代表指令的存放地址
汇编语言的特点:
① 所占空间、执行速度与机器语言相仿
② 直接、简捷,能充分控制计算机的硬件功能
Intel 8086 微处理器简介
通用寄存器:
AX(累加器)
BX(基址寄存器)
CX(计数器)
DX(数据寄存器) ;可以分8位使用。
指针及变址寄存器:
SP(堆栈指针寄存器)
BP(基址指针寄存器)
SI(源变址寄存器)
DI(目的变址寄存器)
IP(指令指针寄存器):用来存放下一条要执行指令在内存中代码段中的偏移地址。
主存储器
- 主存的基本存储单位是位(bit),它能容纳一个二进制数的0或1
- 字节编址:以字节为最小寻址单位。
- 8086的最大寻址空间1M
- 字的存放形式“低位在前,高位在后”
- “对准字”和“不对准字”
堆栈
在内存中开辟出一片存储区,采用一端固定,另一端活动的方式存取数据
进栈指令 PUSH
格式: PUSH OPS
功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈。
(SP)-2 -> SP
例:假设(SP)=1000H (AX)= 1234H
PUSH AX
执行后:(SP)=0FFEH
注:PUSH AL ;错误
PUSH 0003H ;错误
出栈指令 POP
格式: POP OPD
功能:将栈顶元素(字)弹出送至寄存器、段寄存器(CS除外)或存储器中。
(SP)+2 -> SP
例:设 (BX)=2004H
POP BX
执行后: (BX)=1234H (SP)=1000H
注:PUSH CS ;正确
POP CS ;错误
存储器的分段管理
- 地址表示的一对矛盾:
直接寻址能力为1M (字节);
而寄存器是16位结构的。
- 解决方法:
引入了存储器“分段”的概念,即把1M字节内存空间分成若干段。每段最大可达64K字节--可由16位寄存器进行寻址。
段的起始地址成为“段基址”,要访问的单元距段基址的距离(字节数)为“偏移量”(Offset)。
程序设计时,使用的是逻辑地址。逻辑地址由“段基址”和“偏移量”构成(均为16位)。
“段基址”由段寄存器CS、DS、SS和ES提供;
“偏移量”由BX、BP、IP、SP、SI、DI或根据寻址方式计算出的有效地址EA(Effective Address)提供。
- 注意:
①每个存储单元有唯一的物理地址,但它却可由不同的“段基址”和“偏移量”组成。例如:
1200H:0345 -> 12345H 1100H:1345 -> 12345H
② 除非专门指定,一般情况下,段在存储器中的分配是由操作系统负责的。
例1:设(CS)=8000H (IP)=0100H
问下一条要执行的指令的物理地址PA?
(CS)内容左移4位+(IP)
PA = 80000H+0100H=80100H
例2:设(DS)=1000H 该数据段中偏移量为0200H处的物理地址PA?
(DS)内容左移4位+偏移量
PA = 10000H +0200H =10200H
例3:设(SS)=1000H (SP)=2000H 问该堆栈段栈顶的的物理地址PA?
(SS)内容左移4位+(SP)
PA = 10000H +2000H =12000H
数值数据在机器内的表示形式
8086的两个规定:
- 数值数据均指无符号定点数
- 有符号数则一律采用n位二进制补码表示。
- 8086中,16位补码的表示范围:
7FFFH ~~ 8000H
注:机器在进行算术运算时,总是把参加运算的用补码表示的操作数作为无符号数处理。
字符数据在机器内的表示形式
ASCII码 (美国信息标准交换码)
- 字符数据是以ASCII码形式存放在内存中的。
例如 “1” 就是 31H
“A” 就是 41H
BCD码
定义:利用二进制形式来表示十进制数。
利用4位二进制数(0000B~1001B)来表示十进制数(0~9)
例如: 19 = 00011001BCD
= 000010011B
标志寄存器
1、状态标志:表示前面的操作执行后,算术逻辑部件处于怎样一种状态。
例如,是否产生了进位,是否发生了溢出等等。程序中,可以通过对某个状态标志的测决
定后面的走向及操作。
零标志ZF(Zero Flag):若运算结果为0,则ZF=1;否则ZF=0。
例1:MOV AL, 4
SUB AL, 4
例2:XOR AX, AX
执行后,ZF也一定为1。
进位标志CF(Carry Flag):
它反映:
加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。
减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。
例如:
MOV AL, 3;
SUB AL, 4;
执行后,CF=1。
奇偶标志PF(Parity Flag):
若运算结果低8位中“1”的个数为偶数,则PF=1;否则PF=0。
例:MOV AL, 2
ADD AL, 1
执行后,PF位为1。
辅助进位标志AF(Auxiliary carrry Flag):
也称“半进位标志”,它反映:
加法时,第3位向第4位有进位;
减法时,第3位向第4位有借位。
溢出标志OF(Overflow Flag):
若运算过程中发生了“溢出”,则OF=1。
定义:运算结果超出计算装置所能表示的范围,称为溢出。
判断方法之一【逻辑】:
溢出=最高位进位 ⊕ 次高位进位
符号标志SF (Sign Flag):
当运算结果的最高位为1时SF=1,否则SF=0。
例:分析执行下述两条指令后,以上六个标志位的变化。
MOV BL,58H
ADD BL,4AH
解: 0101 1000B
+ 0100 1010B
1010 0010B
CF=0 SF=1 OF=1 PF=0 ZF=0 AF=1
2、控制标志(3位):
每一位控制标志都对一种特定的功能起控制作用。可以通过专门的指令对其进行“置位”(Set)或“复位”(Reset)。
中断标志IF(Interrupt Enable Flag):
如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。
指令系统中有两条专门的指令可以置“1”或置“0” IF标志位:
STI 使IF置“1”,即开放中断。
CLI 使IF清“0”,即关闭中断
方向标志DF(Direction Flag):
用于串操作指令中的地址增量修改(DF=0)还是减量修改(DF=1)。
STD
CLD
跟踪标志TF(Trap Flag):
若TF=1,则CPU按跟踪方式(单步方式)执行程序。
3、标志位寄存器的操作
- 传送
LAHF
功能:将标志位寄存器的低8位送入AH中,即:
(FLAGS)7~0 -> AH
例:执行前 (FLAGS)=0485H (AX)=0FFFFH
执行后 (FLAGS)=0485H (AX)=85FFH
SAHF
功能:将AH的内容送入标志位寄存器的低8位中,即:
AH ->(FLAGS)7~0
- 栈操作
PUSHF
POPF
例: MOV AX,0FFFFH
PUSH AX
POPF
结果:(FLAGS)=0FFFFH
汇编语言——基础知识相关推荐
- x86汇编语言基础知识
文章目录 内存 总线 寄存器 通用寄存器 段寄存器 状态标志 EIP指令指针 数据表示 x86基本操作指令 指令格式 操作数 x86汇编语言必备知识 x86汇编语言主要包括总线.寄存器结构,数据类型, ...
- 【CSAPP笔记】4. 汇编语言——基础知识
程序的机器级表示 计算机能读懂是机器代码(machine code)-- 用字节序列编码的低级操作 -- 也就是0和1.编译器基于编程语言的规则.目标机器的指令集和操作系统的规则,经过一系列阶段产生机 ...
- Linux操作系统汇编语言基础知识(图文代码)
1.什么是汇编语言,它在计算机语言中的地位? 汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言 2.汇编语言与源程序.汇编程序.汇编的关系? 3.汇编语言的特点 \1) 汇编语 ...
- 汇编语言 | 基础知识
文章目录 0x00 前言 0x01 为什么学习汇编语言 0x02 汇编语言的由来 0x03 机器语言和汇编语言 0x04 0和1构造万物 0x05 进制转换 0x06 进制运算 0x07 补码运算 0 ...
- 汇编语言基础知识(自用,是纯知识点概念)
汇编语言对学习操作系统计算机组成原理有十分重要的意义 一.CPU的简述 CPU:包括三个部分:寄存器组,运算器,控制器 运算器:用来实现各个逻辑运算或算数用算 寄存器组:为处理单元提供所需要的数据 控 ...
- 汇编语言基础知识摘要(《汇编语言》王爽)第 1 / 17 章
CPU,是计算机的核心部件,它控制整个计算机的运作并进行运算. 存储器,即内存,存放CPU需要的指令和数据. 寄存器,是CPU中可以储存数据的器件,一个CPU中有多个寄存器. 汇编语言由以下3类指令组 ...
- 猿创征文 |汇编语言基础知识
目录 1.0小结 1.5小结 1.1汇编语言的"前身"--机械语言 非书本: 书本原图内容: 共两页 编辑1.2汇编语言的产生 经典图例 汇编语言与机器语言之间的关系(书本) 高 ...
- 汇编语言基础知识摘要(《汇编语言》王爽)第 3 / 17 章
字单元:即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成.高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节. 在以后的课程中,我们将起始地址为N的字单 ...
- 汇编语言二进制转十进制_汇编语言笔记(一)——基础知识
汇编语言基础知识 汇编语言组成 汇编指令:就是机器指令的助记符 伪指令 其他符号 计算机中数的表示 2^10=1K 2^20=1M 2^30=1G 2^40=1T 进制运算 二进制运算:1+1=0(向 ...
最新文章
- Android使用自定义View时:Error inflating class错误的原因。
- qtp启动java程序_转: QTP六脉神剑之调用Java程序
- 【送书活动】C# 程序员的自我修养
- golang 1.10 mutex互斥锁源码
- 链式向前星(一个优秀的存储图的数据结构)
- 使用 BoringSSL 优化 HTTPS 加密算法选择(不同终端加密算法不同)
- Windows 平台下Myeclipse 10 中SVN 插件使用教程(TortoiseSVN)
- python decorator_python3(十八)decorator
- 定制10kV变压器感应雷直击雷击变压器加避雷器atp-emtp模型
- WiFi基础知识解析
- layui设置请求加载旋转等待
- 正在创建系统还原点_如何在Windows 7中创建系统还原点
- 思科模拟器 --- 路由器静态路由配置
- 计算机专业排名211大学排名,计算机专业大学排名,计算机专业强的211!
- Harris Corner
- 360校园招聘2015届技术类笔试题
- 十年数据标注:缺席的独角兽与走不出的围城
- crontab在线生成工具
- java 正则表达式去除字符串中的转义字符(/b /u0002 /u001D等)
- 前端工程化之自动合成精灵图