




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章汇编语言基础5 1汇编语言的基本概念汇编语言是用指令助记符 符号地址和标号书写的语言 用汇编语言编写的程序称为汇编语言源程序 汇编语言源程序必须进行加工翻译转换为机器语言程序 将源程序翻译成机器语言程序的过程叫汇编 完成这种工作的语言程序称为汇编程序 汇编程序是一种系统软件 IBMPC系统配置了两种汇编程序 一种称为小汇编的ASM 另一种是宏汇编MASM 目前 一般多用宏汇编MASM 程序设计语言机器语言汇编语言 机器语言的符号化 与机器密切相关 高级语言 汇编语言的意义速度 对于同一个问题 用汇编语言设计出的程序能达到 运行速度最快 空间 对于同一个问题 用汇编语言设计出的程序能达到 占用空间最少 功能 汇编语言可以实现高级语言难以胜任甚至不能完成的任务 知识 学习汇编语言 有助于对计算机系统的理解 写出更好的程序 5 1 1汇编语言的基本语法1 字符集8086 8088宏汇编语言规定可以使用的字符详见P77 782 标示符标示符在程序中用作变量名 常量名 记录名和段名等具体規定见P783 保留字8086 8088中指令助记符 伪指令 寄存器名 表达式运算符及属性操作符等均为保留字 保留字不能当作标示符使用 4 语句80X86宏汇编有两种基本语句 指令语句和伪指令语句指令语句对应机器的一种操作 汇编后产生一个目标代码 伪指令是帮助汇编的 不产生目标代码 与机器操作无关 一条语句在源程序中一般只占一行 长度超过一行时必须用续行符号 1 指令语句 一般格式如下 标号 前缀 指令助记符 操作数 注释 其中 标号 表示该指令语句的存储器地址 供转移指令 调用指令或循环指令作为操作数使用 前缀 是一些必须和其他指令配合使用的特殊指令 指令助记符 是指令中的关键字 不可缺省 操作数 指令要处理的数据 可以是一个或两个 也可没有 隐含 注释 说明指令功能 2 伪指令语句 一般格式如下 名字 伪操作命令 操作数 注释 名字可以是符号名 常量名 变量名 过程名和段名等 后面不能有 是和指令语句的显著区别 伪指令命令 主要包括符号定义 变量定义 程序分段定义 过程定义 模块定义 和宏定义等 操作数随伪操作命令的不同而不同 它们的格式和定义将在后面的章节中一一介绍 5 汇编语言程序结构由指令 伪指令 变量 标号等组合起来写出的程序成为源程序 一个汇编语言的源程序由若干个段和一行表示程序结束的伪指令组成 80X86宏汇编语言规定程序中最多可包括四种类型的段即 代码段 数据段 堆栈段和附加段 每个段在程序中的先后不定 数目也不定 但必须有段名 综上所述 用汇编语言编写的程序 在结构上具有以下特点 1 由若干逻辑段组成 各逻辑段包括伪指令语句定义和说明 2 整个源程序以伪指令END结束 3 每个逻辑段由语句序列组成 各语句可以是指令语句 伪指令语句 宏指令语句 注释语句或空行语句 单模块汇编语言源程序的结构DATESEGMENT 数据定义伪指令序列 定义数据段DATEENDSSTACKSEGMENTSTACK 堆栈定义伪指令序列 定义堆栈段STACKENDSCODESEGMENT 程序段 定义代码段CODEENDSEND标号 在实际应用中 把一个独立汇编的源程序称为一个模块 一个大程序可由几个模块组成 每个模块具有不同的功能 这些模块分别汇编成目标代码后 再用连接程序把它们连接成一个可执行程序 其中只有一个模块可以指出程序的启动地址 该模块称为主模块 这就是汇编语言程序设计上机顺序 首先编写源程序 其次汇编 然后连接 最后执行 编辑程序 ASM文件 OBJ文件 汇编程序 EXE文件 连接程序 汇编语言程序的处理过程 常见的汇编程序有以下两种类型 1 行汇编程序 对汇编语言源程序进行逐条汇编 常见的IBMPC动态调试程序DEBUG中的A命令就属于这种汇编类型 2 宏汇编程序 对扩展名为 ASM的汇编语言源程序进行汇编 产生扩展名为 OBJ的可重定位的目标代码文件 然后用链接程序LINK链接一个或多个 OBJ模块 包括库文件 产生一个扩展名为 EXE的可执行目标文件 P80 具体进行汇编处理的过程如下 建立源程序 产生目标代码 链接目标程序 运行和调试 一个简单的例子CODESEGMENTASSUMECS CODEMAINMOVAH 2MOVDL A INT21HMOVAH 4CHINT21HCODEENDSENDMAIN本程序功能在屏幕上输出一个大写字母A 5 280X86指令基础5 2 1指令格式1 指令和指令系统指令是计算机能够识别和执行的某种操作命令 一种计算机中所有指令的集合称为该计算机的指令系统 可分为如下几类 1 数据传送指令 2 算术运算指令 3 逻辑运算指令 4 移位运算指令 5 位与位串操作指令 6 控制转移指令 7 输入 输出指令 8 其他指令 2 指令格式 0 3字节1 2字节1 2字节1 4字节1 4字节80X86机器指令编码的一般格式 8086CPU指令形式 第1字节为操作码字节 其构成如下 7210 8086中指令操作码的长度是固定的 一般占第一字节中的7 2位 D指示操作方向 D 0表示REG指出的寄存器是源操作 D 1表示REG指出的寄存器是目的操作数 W指示是16位寄存器还是8位寄存器参加操作 W 116位寄存器参加操作 W 08位寄存器参加操作 第2字节为MOD字节 其构成为 其中MOD占两位 为寻址方式指示位 REG指示参加操作的寄存器编码 R M字段可以指示参加操作的寄存器编码 也可以指示有效地址的计算方法 5 2 2寻址方式寻址方式是指令中用于说明操作数所在地址的方法 这里只讨论操作数的寻址方式 80 x86系列计算机有8种基本的操作数寻址方式 其中比例变址寻址只在80386以上的微处理器中使用 1 立即寻址 又称立即数寻址 操作数直接放在指令中成为立即数 立即数规定只能是整数 例如 MOVAL 30 十进制形式的立即数MOVAX 3030H 十六进制形式的立即数MOVAL 11001101BMOVAL 3 字符形式的立即数立即寻址还有一些比较复杂的情况 如果操作数是由数字和运算符构成的表达式 汇编语言在汇编时会计算出表达式的值 并将计算结果以立即数的形式翻译到机器指令中 MOVAL 3 30H 1 立即寻址方式指令操作数部分直接给出指令的操作数 操作数与操作码一起存入代码段中 立即数有8位和16位 只能为整数 80X86或更高档机器中 立即数也可以是双字等 例 MOVAL 5 源操作数为立即寻址指令执行后 AL 05H 8位数据05H存入AL寄存器 例 MOVAX 3064H 源操作数为立即寻址指令执行后 AX 3064H 16位数据3064H存入AX寄存器 立即数只能是源操作数 此种寻址方式主要用于对寄存器赋值 操作数在指令中 执行速度快 2 寄存器寻址方式寄存器寻址方式的操作数是寄存器的值 指令中直接使用寄存器名 包括8位或16位通用寄存器 可使用的16位寄存器 AX BX CX DX 通用寄存器 SI 源变址寄存器 DI 目的变址寄存器 SP 堆栈指针寄存器 BP 基址寄存器 其中 AX BX CX DX可分成两8位使用 例 MOVAX CXMOVAL BLMOVAX 2056H对于80386或更高档机器中 立即数可为双字例如 MOVEBX 12345678H 2 寄存器寻址 操作数在CPU的内部寄存器中 指令指出寄存器名 P83 例如 MOVAL BL BL ALMOVAL DHMOVAX SI要注意数据匹配 3 内存寻址方式操作数寻址方式主要分为三类 其中内存寻址方式最复杂 在内存寻址方式中 操作数是某个内存单元的内容 值 指令中给出的是内存单元的有效地址EA 即偏移地址 段地址通常在隐含的某个段寄存器中 一 直接寻址 直接寻址方式的操作数地址的16位偏移量 又称有效地址EA 直接包含在指令中 例如 MOVAX DS 2000H 假设 DS 3000H 则物理地址为32000H 如果指令无前缀 则默认操作数存放在数据段寄存器DS中 它存放在代码段中指定操作码之后 但操作数一般存放在存储器的数据段中 所以必须先求出操作数的物理地址 然后再访问存储器才能取得操作数 例如 MOVAX 2000H MOVAX ES 2000H 在汇编语言中 经常使用符号地址代替数值地址 例如 Movax 3000h 寻址示意图 二 寄存器间接寻址 在这种寻址方式中 寄存器中存放的是操作数地址的16位偏移量 注意这里使用的寄存器只有4个 基址寄存器 BX BP 和变址寄存器 SI DI BX SI DI BP 前三个寄存器对应的缺省段寄存器是DS BP对应的缺省段寄存器是SS 如果需要 寄存器间接寻址方式也可以使用段跨越例如 MOVAL DS BP MOVAL ES BX MOVAL SS DI 例如 MOVAX BP 寻址示意图 操作数在存储器中 指令中寄存器内容作为操作数所在单元的有效地址 BX SI DI BP 有效地址 段寄存器为DS 段寄存器为SS 物理地址计算方法 物理地址 DS 16 BX 或 SI 或 DI 物理地址 SS 16 BP 例 已知 DS 2100H DI 2000H指令 MOVAX DI AX DI 物理地址 DS 16 DI 2100H 16 2000H 21000H 2000H 23000H指令结果 将23000H单元内容送AL中 将23001H单元内容送AH中 直接寻址和寄存器间接寻址 是汇编语言中内存型操作数最常用的两种方式 如果与高级语言相比 直接寻址相当于高级语言中的整数 字符等类型的简单变量 而寄存器间接寻址则相当于指向某种数据类型的指针变量 地址 三 寄存器相对寻址方式 变址寻址 BX DISP8 SI DI BP DISP16 有效地址 段寄存器为DS 段寄存器为SS 又称变址寻址 是将一个基址或变址寄存器中的值 与一个8或16位数据相加 其结果作为偏移地址 有效地址 相见书85页举例 物理地址 DS 16 BX DISP8 SI DI DISP16类同 物理地址 SS 16 BP DISP16 寄存器相对寻址的缺省段寄存器按下列规则处理 变量 寄存器 形式 以变量对应的缺省段寄存器为准 寄存器 数值 形式 以寄存器对应的缺省段寄存器为准 不允许同时出现两个或两个以上的变量相加的情况 但可以出现两个定义在同一段中的变量相减 减法表示两个变量偏移地址的差值 这个差值不再作变量看待 此时缺省段寄存器则以基址或变址寄存器的缺省段寄存器为准 逻辑地址中的段与偏移的对应关系是非常重要的 如果搞错对应关系 就无法从内存正确的位置取出正确的操作数 或将操作数放到内存中一个错误的位置 这种错误不是可以指出的语法错误 而属于逻辑错误 这个错误是很难查出的 寄存器相对寻址的主要用途是针对类似高级语言中定义的数组 以一个通用寄存器放下标值实现对数组元素的直接访问 例如 在汇编语言中 设ARR是一个整型数组变量 其中存放了10个字型带符号整数 用 ARR BX 得形式可访问各元素 BX的取值分别为0 2 4 6 8 10 12 14 16 18 例 如果 DS 3000H SI 2000H COUNT 3000H 执行指令MOVAX CONUT SI 求出此种寻址方式对应的有效地址和物理地址 有效地址 2000H 3000H 5000H物理地址 DS 16 5000H 30000H 5000H 35000H例如 MOVAX COUNT BP 若 SS 5000H BP 3000H COUNT 2040H有效地址 3000H 2040H 5040H物理地址 50000H 5040H 55040H 四 基址加变址寻址 又称基址变址寻址 使用一个基址寄存器和一个变址寄存器的值相加 计算结果作为操作数的偏移地址 缺省时的对应关系是 当基址寄存器是BX时 段寄存器是DS 当基址寄存器是BP时 段寄存器是SS 如果需要 基址变址寻址方式也可以使用段跨越 例如 MOVAX BX SI MOVAX BX SI 这种寻址方式同样适用于数组或表格处理 首地址可存放在基址寄存器中 而用变址寄存器来访问数组中的各个元素 由于两个寄存器都可以修改 所以使用比较灵活 BX SI BP DI 有效地址 物理地址 DS 16 BX SI 或 DI 物理地址 SS 16 BP SI 或 DI 例 MOVAX BX DI 或MOVAX BX DI DS BX DI 字存储单元内容送AX 例 MOVAX BP SI 或MOVAX BP SI SS BP SI 字存储单元内容送AX 在高档机中 可用的寄存器更多 参见书85页举例 例 如果 DS 2100H BX 0158H DI 10A5H EA 11FDH 执行指令MOVAL BX DI 有效地址 EA BX DI 0158H 10A5H 11FDH物理地址 DS 16 有效地址 21000H 11FDH 221FDH执行结果 将221FDH单元内容送入寄存器AL中 五 相对的基址加变址寻址 又称相对基址变址 操作数的有效地址 是在基址变址的基础上再加上一个8位或16位的偏移量 这种寻址方式用起来比较灵活 尤其是对堆栈数据的访问提供了较大的方便 访问堆栈数组时 将BP指向栈顶 位移量用来表示栈顶到数组首地址的距离 变址寄存器DI 或SI 用来指向数组中的某一个元素 例 已知 DS 3000H BX 2000H SI 1000H MK 0250H指令 MOVAX MK BX SI 或MOVAX MK BX SI 或MOVAX MK BX SI 有效地址 MK BX SI 0250H 2000H 0100H 3250H物理地址 DS 16 有效地址 30000H 3250H 33250H执行结果 将33250H单元内容送AL 33251H内容送AH 比例变址寻址只出现在80386以上的机器中 是指一对寄存器中的第二个比例因子用2 4 或8来乘 产生操作数的内存地址 见书86页 5 380X86指令系统5 3 1数据传送指令1 通用数据传送指令 1 MOV指令格式 MOVOPRD1 OPRD2功能 将字节或字从源传送到目的地 2 PUSH指令格式 PUSHOPRD功能 将字压入堆栈 3 POP指令格式 POPOPRD功能 将字从堆栈弹出到目的操作数 PUSE指令执行的操作 先将 SP 2 然后将操作数指明的字型数据放入以SS为段地址 SP为偏移地址所对应的内存单元中去 包括移动栈顶和存入数据两部分 两部分连续完成 密不可分 POP指令执行的操作 从以SS为段地址 SP为偏移地址对应的内存中取出一个字型数据 送到操作数指定的位置 然后 SP 2 举例 设AX 4F8AH BX 307CH SP 1000H 分别执行下列指令 用内存图的形式画出堆栈的变化 并分析程序段执行后AX和BX寄存器的值 PUSHAXPUSHBXPOPAXPOPBX XX XX YY XX XX 0FFC0FFD0FFE0FFF1000 SP XX XX 8A 4F YY SP 7C 30 8A 4F YY SP XX XX 8A 4F YY SP XX XX XX XX YY SP 执行前PUSHAX后PUSHBX后POPBX后POPAX后注 XX表示栈空闲区填充的无用数据 YY表示栈中已存放的有效数据 AX BX 4 XCHG指令格式 XCHGOPRD1 OPRD2功能 可在源 目的操作数之间交换一个字节或字的数据可在寄存器与寄存器之间 或寄存器与存储器之间交换 但不允许使用段寄存器 5 XLAT指令格式 XLATOPRD或XLAT功能 这是一条隐含操作数指令 将BX寄存器内容加上AL寄存器内容作为操作数的偏移地址 从这个地址取一字节内容送入AL寄存器 该指令的功能概括地说就是 查表转换 在内存中预先放置一张表 每个表项由一个字节构成 最多不超过256字节 将表的起始偏移地址放在BX中 要想取出表的第N项 可以先将N放到AL中 然后用该指令取出指定表项放在AL中 2 输入 输出数据传送指令可分为两大类 直接输入 输出指令 间接输入 输出指令 1 输入指令 1 直接输入指令IN格式 IN累加器 端口地址功能 将数据从输入端口传送到累加器 例如 INAL PORT 将PORT端口的字节内容AL 2 间接输入指令 将外设地址放在DX寄存器中 类似寄存器间接寻址 但不需加括号 当外设地址大于255时 必须放在寄存器DX中 小于或等于255时 两种寻址方式都有效 例如 INAL DX 从DX所指的端口中读取一个字节 2 输出指令 1 直接输出指令OUT格式 OUT端口地址 累加器功能 将数据从累加器传送到输出端口中 例如 OUTPORT AL 将AL的内容送入PORT端口 2 间接输出指令执行指令时 端口地址已传送到DX寄存器中 其它规定和输入指令相同 详见书中例子输入 输出指令在接口设计中用的较多 3 地址传送指令 1 LEA指令格式 LEAOPRD1 OPRD2功能 取有效地址 原操作数必须是一个内存单元地址 目的操作数必须是16位的通用寄存器 此指令将原操作数的地址偏移量送入目的操作数 例如 LEADI ADDR 将ADDR地址偏移量送入DILEABX BP SI 指令执行后 BX中的内容为BP SI的值 2 LDS指令格式 LDSOPRD1 OPRD2功能 完成一个地址指针的传送 地址指针包括段地址部分和偏移量部分 指令将段地址送入DS 将偏移量送入一个16位的指针寄存器或变址寄存器中 例如 LDSSI BX 将BX指向的32位地址指针的高16位送入DS 低16位 偏移量 送入SI 3 LES指令格式 LESOPRD1 OPRD2功能 同LDS 区别在将段地址传送给ES 例如 LESDI BX BUF 请加注释 地址传送指令的操作功能 1 LEA指令格式 LEAREG OPRD功能 有效地址送寄存器指令执行的操作 OPRD REG 2 LDS指令格式 LDSREG OPRD功能 指针送寄存器和DS指令执行的操作 OPRD REG OPRD 2 DS 3 LES指令格式 LESREG OPRD功能 指针送寄存器和ES指令执行的操作 OPRD REG OPRD 2 ES 以上三条指令指定的寄存器不能使用段寄存器 且源操作数必须使用除立即数及寄存器方式以外的其他寻址方式 本组指令把变量的偏移地址 LEA 或段地址和偏移地址 LDS和LES 送给寄存器 以提供访问变量的工具 状态标志位传送指令 1 LAHF指令将标志寄存器的低8位送入AH 2 SAHF指令将AH寄存器内容送入标志寄存器的低8位 3 PUSHF指令将16位标志寄存器内容压栈 4 POPF指令将当前栈顶内容弹出至标志寄存器 5 3 2算术运算指令1 加法一般形式 ADDoprd1 oprd2 oprd1 oprd1 oprd2ADCoprd1 oprd2 oprd1 oprd1 oprd2 CFINCoprd oprd oprd 1语法格式 ADDreg mem reg mem immADCreg mem reg mem immINCreg mem对标志位的影响 ADD ADC 按一般规则影响CF OF SF和ZF INC 不影响CF 其它同ADD 说明 ADD与ADC的2个操作数必须类型匹配 且不能同时是内存操作数 其他加法指令 AAA非压缩BCD码加法调整指令执行的操作 将AL中的和调整到非压缩的BCD格式 AL AH 调整产生的进位和 AH 这条指令之前必须执行ADD或ADC指令 加法指令必须把两个非压缩的BCD码相加 并将结果存放在AL寄存器中 具体调整过程如下 1 AL的低4位为0H 9H之间 且标志AF为 0 执行 3 2 AL的低4位为AH FH之间 或标志AF 1 则 AL 06 AL AH 1 AH AF置 1 3 AL寄存器的高4位被清除 4 将AF的值送CF标志位 举例 AX 0008H BL 09H 执行下列指令ADDAL BL AL 11H BL 09H AF 1AAA AL 07H AH 01H或 AX 0107H CF 1 DAA加法的十进制调整指令执行的操作 把AL中的和调整到压缩的BCD格式 AL 这条指令之前必须执行ADD或ADC指令 具体操作如下 1 AF 1或AL寄存器的低4位为AH FH时 AL 06H 并将标志AF置 1 调整低4位 2 CF 1或 AL 的高4位为AH FH时 AL 60H 并将标志CF置 1 调整高4位 例如 当 AL 26H CL 26H 分析以下指令的执行情况 ADDAL CL AL 4CH CF 0 AF 0DAA AL 52H CF 0 AF 1可以看到DAA指令是将 AL 06 AL 使得 AL 52 使结果调整为正确的BCD码 并将标志AF置1 2 减法指令 1 SUB指令格式 SUBOPRD1 OPRD2功能 完成两个操作数相减 结果放在目的操作数中 详见书中实例 SBB指令格式 SBBOPRD1 OPRD2功能 与SUB基本相同 区别在于在两个操作数相减时 还要减去借位标志CF的当前值 DEC指令格式 DECOPRD功能 完成对操作数OPRD减1运算后返回操作数中 操作数可以是寄存器或存储器 4 NEG指令格式 NEGOPRD功能 完成对操作数取补 即用零减去操作数 再将结果送回操作数 详见书中例子 CMP指令格式 CMPOPRD1 OPRD2功能 完成两个操作数相减 但不回送结果 结果只影响标志状态 详见书中讲解 其他减法指令AAS非压缩BCD码减法调整指令格式 AAS功能 将AL中的差调整为非压缩的BCD码 AAS指令用在SUB SBB指令之后 调整过程如下 1 AL寄存器的低4位为0H 9H时 且标志AF 0则执行 3 2 AL的低4位为AH FH时 或标志AF 1 AL 06H AL AH 1 AH AF置1 3 AL寄存器的高4位被清除 4 将AF的值送CF标志位 DAS压缩BCD码减法调整指令格式 DAS功能 将AL寄存器中的差调整为压缩的BCD码具体操作 1 当AF 1或者AF的低4位为AH FH时 AL寄存器的内容减去06H 并将标志AF置 1 2 当CF 1或者AL寄存器的高4位为AH FH时 AL寄存器内容减去60H 并将标志CF置 1 3 乘法指令 1 MUL无符号数乘法指令格式 MULOPRD功能 完成两个无符号数的乘法运算 要求被乘数放在AL或者AX寄存器中 用于字节运算和字运算 另一乘数可通过指令中的OPRD 除立即数寻址方式以外 获得 不允许为立即数 详见书中例子 2 IMUL带符号数乘法指令格式 IMULOPRD功能 完成两个带符号数的乘法运算 其操作数与结果的存放方式与MUL指令相同 如果为负数时 则用补码表示 其结果也用补码表示 3 AAM非压缩BCD码乘法调整指令格式 AAM功能 将存放在AX中的积调整为非压缩的BCD码 该指令用在MUL指令对两个非压缩BCD码的数进行乘法之后 其调整方法是将AL寄存器中的内容除以0AH 商放在AH寄存器中 余数放在AL寄存器中 例如 AL 08H BL 08H执行下列指令MOVAL 08HMULBL AX 0080HAAM AH 06H AL 04H通过上例 可以看出十进制调整指令使结果为一个BCD码 4 除法指令 1 DIV无符号除法指令格式 DIVOPRD功能 完成两个无符号数的除法运算 分为字和字节操作 字节操作时 被除数放在AX中 8位除数由指令给出 结果商放在AL中 余数放在AH中 字操作时 被除数放在DX AX中 16位除数由指令给出 结果商放在AX中 余数放在DX中 2 IDIV格式 IDIVOPRD功能 完成两个带符号数的除法操作 执行该指令时 要求操作数为带符号数 商及余数也为带符号数 规定余数与被除数符号相同 3 AAD非压缩BCD码除法调整指令格式 AAD功能 将AX寄存器中非压缩的BCD码形式的被除数调整为二进制数 并存放在AL中 用于DIV指令之前 具体执行的操作 10 AH AL AL AH 0 AH清为0 4 CBW字节转换为字 字节型符号扩展 格式 CBW功能 对AL中的带符号数进行符号扩展该指令一般与IDIV指令配合使用 5 CWD字转换为双字 字形符号扩展 格式 CWD功能 对AX中的带符号数进行扩展到DX中 该指令一般与IDIV指令配合使用 在除法字节操作中要求被除数为16位 字操作中被除数为32位 5 3逻辑运算和移位指令1 逻辑运算指令 参见书93 94页举例 1 NOT指令格式 NOTOPRD功能 对操作数按位取反 结果送回原处 例如 MOVAL 12HNOTALAND指令格式 ANDOPRD1 OPRD2功能 对两个操作数按位 与 运算 结果放回目的操作数 3 OR指令格式 OROPRD1 OPRD2功能 对两个操作数按位 或 运算 结果送回目的操作数 4 XOR指令格式 XOROPRD1 OPRD2功能 对俩操作数进行按位 异或 运算 结果送回目的操作数 5 TEST指令格式 TESTOPRD1 OPRD2功能 该指令的操作和AND指令完全相同 但结果不回送 逻辑运算指令对标志位的影响详见书中的说明及实例 2 移位指令 1 SAL SHL 算术左移 逻辑左移 格式 SAL SHLOPRD m CF 0 SAR算术右移指令格式 SAROPRD m CF 其中 OPRD可以是除立即数以外的任何寻址方式 移位次数由m决定 为1时可用立即数 如果大于1则可在移位指令前将移位次数送到CL寄存器中 3 SHR逻辑右移指令格式 SHROPRD m CF 0 4 循环移位指令 CF CF CF CF 循环左移循环右移 带进位循环左移带进位循环右移 5 3 4串操作指令串可以是字节串或字串 串指令有两类 串操作指命令 控制操作重复执行的前缀命令 串操作时 下列寄存器及标志位起着特定作用 程序应根据操作的具体要求赋予初值 SI寄存器源串变址用DI寄存器目的串变址用CX寄存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康办公设备销售及安装合同协议
- 2025年食品安全追溯体系在食品销售渠道中的应用与优化报告
- 2025年多式联运信息平台大数据分析与物流企业协同发展前景研究
- 2025年中医药现代化国际市场拓展的中医药养生服务市场趋势研究报告
- 2025年房地产市场库存压力释放策略与营销策略创新应用报告
- 小学中秋节活动策划方案模板
- 2025年中国跑车行业市场调查研究及投资前景预测报告
- 2025标准低压供用电合同范本
- 春季运动会策划方案
- 2025年私人出租住房租赁合同
- (2025)医疗护理员理论考试试题含答案
- 2025年贵州省中考英语真题含答案
- 建设工程法律培训
- 炎症性肠病病人的护理
- 肿瘤护理安宁疗护
- 2025年南京市中考数学真题试卷
- 青少年心血管健康防护策略
- 2025年呼伦贝尔农垦集团有限公司招聘笔试参考题库含答案解析
- 2025年重庆市中考数学试卷真题(含标准答案)
- 仓管员笔试试题及答案
- 兵团连队职工考试试题及答案解析
评论
0/150
提交评论