汇编语言程序设计基础知识一 |
您所在的位置:网站首页 › 立即寻址的作用 › 汇编语言程序设计基础知识一 |
一、计算机语言
二、计算机运算基础
三、微型计算机的结构
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 |