微型计算机原理及应用第三版 (4).ppt_第1页
微型计算机原理及应用第三版 (4).ppt_第2页
微型计算机原理及应用第三版 (4).ppt_第3页
微型计算机原理及应用第三版 (4).ppt_第4页
微型计算机原理及应用第三版 (4).ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二 算术运算指令 一 加法指令1 ADD不带进位加指令指令格式 ADDOPD OPS指令功能 OPD OPD 十 OPS 2 ADC带进位加指令指令格式 ADCOPD OPS指令功能 OPD OPD 十 OPS 十CF3 INC加1指令 增量指令 指令格式 INCOPD指令功能 OPD OPD 十1 该指令常用于循环结构程序中修改指针或用于循环计数 对标志位的影响例题 两个4字节的无符号数相加 结果存放在4000H开始的内存中 这两个4字节的无符号数是分别存放在2000H的1008423H和3000H的20007F00 写出指令序列 二 减法指令1 SUB不带借位的减法指令指令格式 SUBOPD OPS指令功能 OPD OPD OPS 2 SBB带借位的减法指令指令格式 SBBOPD OPS指令功能 OPD OPD OPS CF3 DEC减1 减量指令指令格式 DECOPD 指令功能 OPD OPI 14 NEG求补指令指令格式 NEGOPD指令功能 OPD 0 OPD OFFH OPD 十1 OPD为字节时 或OFFFFH OPD 十1 OPD为字时 5 CMP比较指令指令格式 CMPOPD OPS指令功能 OPD OPS 仅置标志位不影响OPD的值 两个数比较后 根据标志位判断比较结果1 无符号数 1 ZF 1 相等 2 CF 0 被减数大 3 CF 1 被减数小 2 有符号数 1 ZF 1 相等 2 SF异或OF 结果 0 被减数大 3 SF异或OF 结果 1 被减数小 例题 将从内存偏移地址2000H开始的99个字节的无符号数和从内存偏移地址3000H开始的99个字节的无符号数相加 结果存放回到2000开始的内存单元中 movsi 2000hmovdi 3000hmovcx 99 加一条清除进位标志指令 第一次就使用带进位加法 clc Lab moval si adcal di mov si alincsiincdideccx 加一条判断zf标志并根据判断结果转移的指令 继续或终止循环 jnzlab moval 0adcal 0mov si al 例题 设X Y Z W均为双精度数 它们分别存放在 X X 2 Y Y 2 Z Z 2 的存储单元中且为高字高地址 写出实现下列式子的指令序列W X Y 24 ZMOVAX XMOVDX X 2ADDAX YADCDX Y 2 X YADDAX 24ADCDX 0 24SUBAX ZSBBDX Z 2 ZMOVW AXMOVW 2 DX 存入W 三 乘 除 法指令1 MUL IMUL 无符号数乘法指令 带符号数乘法指令 指令格式 MULOPS IMULOPS 指令功能 AX AL OPS OPS类型为字节 DX AX AX OPS OPS类型为字 2 DIV IDIV 无符号数除法指令 有符号数除法指令 指令格式 DIVOPS IDIVOPS 字节除法 AX OPS AL 商 AH 余数 字除法 DX AX OPS Ax 商 DX 余数 源操作数OPS可以是寄存器或存储器操作数 但不能是立即数 操作数是有符号还是无符号由使用的指令来决定 有一个操作数是隐含的 除法余数的符号与被除数相同 被除数要比除数长一倍 3 有符号数的扩展指令 最高位向前扩展 CBW 字节扩展成字AL AXCWD 字扩展成双字AX DX AX4 BCD码调整指令加法 DAA AAA减法 DAS AAS乘法 AAM除法 AAD 例题 X Y Z均为双字节有符号数 求完成下式的指令序列W X Y Z XMOVAX XIMULYMOVCX AXMOVBX DXMOVAX ZCWDADDAX CXADCDX BXIDIVV 三 逻辑运算与移位指令 一 逻辑运算指令 进行的是按位操作 注意标志位的变化例题 分别对AL中的0 1位进行 置0 置1 测试是否为0 测试是否为1 将0 1位取反 将AL清零 测试BX中内容是否与地址VALUME相匹配 1 ANDAL OFCH 2 ORAL 3 3 TESTAL 3 4 NOTALTESTAL 3 5 XORAL 3 6 XORAL AL 7 XORAX VALUME 二 移位指令 当移位次数大于一时 由CL来计数例题 将AL中的的数乘以10SALAL 1MOVBL ALMOVCL 2SALAL CLADDAL BL 测试题1 假设 BX 0E3H 变量VALUE中存放的内容为76H 确定下列各条指令单独执行后的结果 XORBX VALUE BX HANDBX VALUE BX HORBX VALUE BX HXORBX 0FFH BX HANDBX 0 BX HTESTBX 01H BX H测试题2 假定 DX 0B9H CL 3 CF 1 确定下列各指令单独执行后DX中的值 SHRDX 1 DX HSARDX CL DX HSHLDX CL DX HSHLDL 1 DX HRORDX CL DX HROLDL CL DX HSALDH 1 DX HRCLDX CL DX HRCRDL 1 DX H 例题 将BX中的数变成ASCII码在屏幕上显示出来MOVCH 4LAB MOVCL 4ROLBX CLMOVAL BLANDAL OFHADDAL 30HCMPAL 3AHJLNEXTADDAL 7NEXT 显示操作DECCHJNZLAB 四 串处理指令串 字符串 是指存放在存储器中的一组字节数据或一组字数据 组成符串的每一个字节或字称为字符串的元素 一个字符串的长度最长64K字节 例题 将偏移地址为1000H开始的一百个内存单元中的内容按地址增的方向复制到偏移地址为2000H开始的一百个内存单元中去 MOVSI 1000HMOVDI 2000HMOVCX 64HLAB MOVAL SI MOV DI ALINCSIINCDIDECCXJNZLAB 用循环程序实现需要做的工作1 源串头地址2 目的串头地址 还要知道地址是增还是减 3 计数次数4 传送5 修改指针6 修改计数次数7 判断是否结束 8086指令系统提供 五条基本串操作指令 MOVSB W ES DI DS SI CMPSB W DS SI ES SI SCASB W AC ES DI LODSB W AC DS SI STOSB W ES DI AC 三个重复前缀指令 REP CX 0则退出重复 REPE REPZ CX 0或ZF 0则退出重复 REPNE REPNZ CX 0或ZF 0则退出重复重复前缀只与CMPS和SCANS联用 1 串操作包括字节串操作和字串操作 2 源串的起始地址 或末地址 用DS SI表示 源串允许使用跨段前缀符来改变段地址 目的串的起始地址 或末地址 ES DI表示 目的串不允许用跨段前缀符修改 3 每执行一次串操作指令 处理一个元素 SI和DI的值会自动修改而指向下一待处理的元素 而SI和DI的修改方向与DF标志有关 4 当DF 0时 SI增1 字节串 或增2 字串 当DF 1时 SI减1 字节串 或减2 字串 STD使DF 1 CLD使DF 0 5 串长度应放在CX寄存器中 6 在基本串操作指令前加重复前缀符 可使串操作指令重复执行直至整个串处理完毕 每重复一次 SI和DI都根据方向标志 自动进行修改 CX的值自动减1 例题 将数据段中的100元素字节变量VAR1中的内容传送到附加段的变量VAR2中去 LEASI VAR1LEADI VAR2MOVCX 64HCLDREPMOVSB 串处理指令执行前的准备工作 SI和DI放入源和目的串的头 尾 地址 或者AC中放入数据 CX中放入初始值 建立方向标志例题 比较数据段中50元素字串VAR1和VAR2是否相同 LEASI VAR1LEADI VAR2CLDMOVCX 50MOVAX DSMOVES AXREPZCMPSW判断CX是否为零例题 找到附加段中50元素字节变量VAR中第一个空格的位置 MOVCX 50LEADI VARMOVAL 20HCLDREPZSCASB 例题 将50元素字节变量VAR中存放的大写字母字符串转换为小写字母 MOVCX 50CLDLEASI VARLEADI VARLAB LODSBADDAL 20HSTOSBDECCXJNZLAB例题 将50元素字变量VAR整体向高地址方向移动10个单元 LEASI VARADDSI 49MOVDI SIADDDI 10STDMOVCX 50REPMOVSB 五 控制转移指令 一 无条件转移指令JMP 二 条件转移指令 单标志测试例题 测试BL寄存器中的八位二进制数有几位为一 测试的结果存入字节变量VAR中 MOVVAR 0MOVCX 8LAB ROLBL 1JNCNEXTINCVAR MOVAL 0 INCAL NEXT DECCXJNZLAB MOVVAR AL 有 无 符号数的比较转移指令 X1 X2 比较两个数的大小应在判断指令之前做一次比较 JCXZ指令一般用在循环程序中 三 循环指令例题1 求1 2 3 100MOVAX 0MOVBX 0MOVCX 100LAB INCBXADDAX BXLOOPLAB四 处理机控制指令 1 设100个16位无符号数存放在2000H开始的内存中 编写程序求它们的和 把32位的和保存在DX 高位 和AX寄存器中 2 将在BL中的数 对高4位求反 低4位保持不变 3 编写计算下列表达式的指令序列 X Y Z 1024 75设X Y和Z均为16位带符号数 分别存放在XXXX YYYY和ZZZZ的存储单元中 结果商保存在AX中 余数保存在DX中 4 将AL寄存器中的低四位存放到BL寄存器的低四位 BL寄存器高四位清零 AL寄存器中的高四位存放到BH寄存器的低四位 BH寄存器高四位清零 5 AL的最低位送入BL的最低位 保持AL不变 6 测试AX的低四位是否全零 如果均是零

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论