汇编语言程序设计基础知识一

您所在的位置:网站首页 立即寻址的作用 汇编语言程序设计基础知识一

汇编语言程序设计基础知识一

2023-07-11 16:35| 来源: 网络整理| 查看: 265

一、计算机语言 二、计算机运算基础 三、微型计算机的结构 1、8086微型处理器的结构 1.1、内部结构

执行单元(EU):

计算指令将要寻址的内存单元的有效地址,然后送到总线接口单元

完成指令规定的操作

总线接口单元(BIU):

根据EU的请求,形成实际地址,完成CPU与存储器或I/O接口之间的数据传送

1.2、寄存器和标志 1.2.1、通用寄存器

16位

存放一般性数据

主要功能:保存CPU分析和执行时产生的中间结果

说明AX = AH + AL主累加器BX = BH + BL基址寄存器CX = CH + CL计数寄存器DX = DH + DL数据寄存器 1.2.2、指针与变址寄存器 说明SP堆栈指针BP基址指针SI源变址寄存器DI目的变址寄存器IP指令指针 1.2.3、段寄存器 说明CS代码段寄存器SS堆栈段寄存器DS数据段寄存器ES附加段寄存器 1.2.4、标志寄存器 说明CF进位标志,当向最高位进位和借位时为1,可用来判断无符号数是否发生溢出OF溢出标志,反映有符号数是否发生溢出AF辅助进位标志,第三位向前的进位或借位PF奇偶标志,低八位中1的个数是奇数还是偶数,偶数为1SF符号标志,最高位的状态ZF零标志,结果为0则为1 1.2.5、双符号位

对参与运算的数据扩展一位符号位,拓展的符号位与原符号位相同

如果结果的双符号位一致,则没有发生溢出,反之,发生溢出

1.3、寻址方式概述 1.3.1、基本知识

存储器是一维线性结构

内存单元的地址(物理地址或实际地址)

存储单元的内容:一个存储单元的有效信息。存储器的内容是取之不尽的,取出后该单元仍保持原来的内容不变,只有存入新的信息后,原来的信息自动消失

1.3.2、8086系统存储器的机构特点

可寻址空间:1MB(20位)

存储方式:按字节存储,20位

一个字节八位,一个字等于两个字节16位

1.2.3、分段结构

为什么?以8086为cpu的计算机的内存最大容量为1MB,需要20位物理地址,但是8086是16位cpu,20位存储器地址无法直接通过16位寄存器给出

什么是?将1MB的存储空间划分为长度不超过64KB的逻辑段,段内地址连续,段与段之间相互独立,每个段有一个基本地址(段首地址),叫做段地址,段内存储单元地址通过段地址+段内偏移地址(该段距离段地址的字节数)得到

1.2.4、实际地址的产生

逻辑地址:

段基址和段内偏移地址组成

段基址:段内偏移地址

实际地址(物理地址):

存储器的绝对地址,20位,

= 段基址 * 16 + 段内偏移地址

= 段基址 * 10H + 段内偏移地址

段首地址

段基址 * 16

1.4、寻址方式 1.4.1、固定寻址

指令要存做的数据在指令中没有明确给出,当隐含在指令中

1.4.2、立即寻址

指令要操作的数据包含在指令码中

1.4.3、寄存器直接寻址

在指令给出寄存器的名字,要操作的数据在该寄存器中

1.4.4、存储器寻址 1.4.4.1、存储器直接寻址

[ 有效地址 ]

1.4.4.2、寄存器间接寻址

[ BX/SI/DI ]

1.4.4.3、基址寻址

[ BX+位移量 ]

[ BP+位移量 ]

1.4.4.4、变址寻址

[ SI+位移量 ]

[ DI+位移量 ]

1.4.4.5、基址变址寻址 1.4.5、注意

在存储器寻址方式中只给出了偏移地址,段地址是隐含的,一般是DS,只有基址寄存器是BP时,段寄存器是SS

除源操作数为立即寻址方式外,其中一个操作数的寻址方式必须是寄存器直接寻址

四、汇编语言 1、汇编语句格式 1.1、字符集 1.2、格式

[ 标号 ] 操作符 操作数 [ ;注释 ]

标号:程序设计人员自己定义的标识符号,用于表示内存单元的地址

标号的规则:

第一个字符不能是0~9的数字,机器指令语句中标号必须以冒号结束,伪指令语句中的标号不允许以冒号结束

标号的本质:内存单元的逻辑地址

标号的三个属性:

1、段值属性:在数据段中定义的标号段值是DS的值,在代码段中定义的标号的段值是CS的值,可以用SEG取得

2、偏移量属性:标号所在段其实偏移地址到它的存放位置之间的字节数,可以用OFFSET取得

3、类型属性:DB、DW等,也可以是表示机器指令代码中的地址时的NEAR、FAR,可以用TYPE得到

操作符:可以是指令助记符、伪指令助记符、宏指令符号

操作数:操作符的对象,可以是数据本身、标号、寄存器名、算术表达式

2、汇编语言中数据的表示方法 2.1、数据在机内的表示

数据的浮点表示法(IEEE754)——以短实数为例

eg. 36.625

(1)转换为二进制 100100.101

(2)规格化后为 1.00100101 * 2^5

(3)阶码为(规格化后的2的多少次方为阶码) 101

(4)加过余量127后(阶码加) 0111 1111 + 0000 0101 = 1000 0100

(5)尾数(23位,规格化后的小数部分,不足23位用0补齐)001 0010 1000 0000 0000

(6)符号&阶码&尾数 0100 0010 0001 0010 1000 0000 0000

​ 4 2 1 2 8 0 0

判断浮点数的大小:

先看符号,再看阶码(阶码大则绝对值大),最后看尾数

2.2、数据的书写形式 3、运算符 3.1、算术运算符

±*/

MOD:取余

SHL:左移

SHR:右移

3.2、逻辑运算符

AND、OR、XOR、NOt

3.3、关系运算符 说明EQ相等NE不等LT小于GT大于LE小于等于GE大于等于 3.4、分析算符 说明SEG取标号所代表的地址的段地址OFFSET取标号所代表的地址的偏移量TYPE取标号所代表的内存单元的类型值SIZE取变量分配的内存单元的字节数LENGTH取变量分配的内存单元数(若定义的字节类型的数据则为几个字节;若定义的子类型的数据则为几个数据) 3.5、组合算符 说明格式PTR用来建立或临时改变存储器操作数的类型NEWT PTR 标号或存储单元THIS通常与EQU伪指令连用,用来定义新的标号,其段基址和偏移量和紧跟其后的标号相同THIS 类型 eg. A2 EQU THIS BYTE B1 DW 3421H 3.6、字节分离算符

用于将一个表达式的高字节和低字节分开

LOW 取低字节

HIGH 取高字节

4、伪指令 4.1、符号定义伪指令

给自定义符号定义一个数值或定义为其他符号名

等价伪指令EQU:

格式: 标识符 EQU 表达式(机器指令助记符、为指令助记符、寄存器名称、各种运算符号、常数)

等号伪指令=:

格式: 标识符 = 表达式(表达式、常数)

区别:

1、=伪指令只能代表表达式或常数,不能是指令助记符

2、EQU定义的标识符不能重定义,而=定义的可以

4.2、数据定义伪指令 说明DB字节,8位DW字,16位DD双字,32位DQDT

格式: 标号 DB/DW/DD/DQ/DT 表达式

DUP 复制操作符:

格式:个数 DUP(预置的值)

在汇编语言的指令语句中适用标号是,必须与其类型相匹配

4.3、段定义伪指令 说明SEGMENT段首说明伪指令ENDS段结束伪指令ASSUME段假定伪指令ORG代码定位伪指令 4.4、其他伪指令 说明格式EVEN使位置计数器定位在偶地址单元.RADIX改变默认进制NAME为程序模块命名END源程序结束END [ 标号 ]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3