运算指令及移位、转移指令

上传人:jun****875 文档编号:23963241 上传时间:2021-06-14 格式:PPT 页数:25 大小:219.07KB
返回 下载 相关 举报
运算指令及移位、转移指令_第1页
第1页 / 共25页
运算指令及移位、转移指令_第2页
第2页 / 共25页
运算指令及移位、转移指令_第3页
第3页 / 共25页
点击查看更多>>
资源描述
算术运算指令加法指令(1)不带进位的加法指令 ADD A,Rn ADD A, #data ADD A, direct ADD A, Ri影响PSW寄存器中各个标志位的确定方法: Cy:最高位有无进位,AC:低四位向高四位有无进位;P:A的奇偶校验位 OV:有符号运算中,最高位进位位与次高位进位位的异或值 (2)带进位加法指令 ADDC A,Rn ADDC A, #data ADDC A, direct ADDC A, Ri注意:影响PSW寄存器中的Cy 、AC、OV、P标志位 (3)加1指令 INC A;只有它影响PSW,其余四个指 令不 影响 INC Rn INC direct INC Ri INC DPTR 2 减法指令(1)带借位减法指令 SUBB A,Rn SUBB A, #data SUBB A, direct SUBB A, Ri会影响PSW寄存器中的标志位 (2)减1指令 DEC A DEC Rn DEC direct DEC Ri只有第一条指令影响PSW中的标志位 3 十进制调整指令DA A影响PSW中的标志位 4 乘法指令MUL AB影响PSW中的标志位若OV=1,则结果超过了2555 除法指令DIV AB影响PSW中的标志位若OV=1,则除数为零,除法无意义 逻辑运算指令 1 、逻辑与指令: ANL A,Rn ANL A,direct ANL A,Ri ANL A,#data ANL direct,A ANL direct,#data 主要用于从某个存储单元或累加器A中取出某几位数,其余位变为0 2、逻辑或指令 ORL A,Rn ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#data这些指令主要用于对某个存储单元或累加器A中的数据的某些位变为1,其余位不变 3、逻辑异或指令 XRL A,Rn XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data这些指令主要用于对某个存储单元或累加器A中的数据的某些位取反,其余位不变 4、累加器清零和取反指令 CLR A CPL A用于对某个存储单元或累加器A中的数进行清零和取反 例: 1、内部数据存储单元30H有一个数39H,试编程把它变为9H 2、设A=AAH、P1=FFH,试编程把累加器A的低四位送入P1口低四位, P1口高四位不变 3、外部RAM30H中有一个数AAH,试编程把它的低四位取反 4、内部RAM 30H中有一负数x,试编程求x的补码 3.3.4 循 环 移 位 指 令 ( 4条 )RL ARR ARLC ARRC A A.7 A.0A.7 A.0A.7 A.0CYCY A.7 A.0后 两 条 指 令 , 影 响 标 志 位 Cy。 用移位指令实现:在不改变符号位的情况下,将R1R0中的16位数右移一位: MOV A,R1 MOV C,ACC.7 RRC A MOV R1,A MOV A,R0 RRC A MOV R0,A 3.3.5 控制转移指令 1、无条件转移指令:长转移类指令: LJMP addr16绝对转移类指令:AJMP addr11短转移指令: SJMP rel间接转移指令:JMP A+DPTR我们在编写汇编语言源程序时,可以直接写成: LJMP 标号 ;即转移到标号处 AJMP 标号 SJMP 标号 JMP 标号 2. 条 件 转 移 指 令(8条)条 件 转 移 指 令 是 指 在 满 足 一 定 条 件 时 进 行 相 对 转移 , 否 则 程 序 继 续 执 行 本 指 令 的 下 一 条 指 令 。(1)判 A内 容 是 否 为 0转 移 指 令 ( 2条 ) JZ rel ; 如 果 A=0, 则 转 移 , 否 则 顺 序 执 行 。JNZ rel ; 如 果 A 0, 就 转 移 。我 们 在 编 写 汇 编 语 言 源 程 序 时 , 可 以 直 接 写 成 :JZ 标 号 ; 即 转 移 到 标 号 处 。JNZ 标号 ;即转移到标号处 (2)比 较 转 移 指 令 ( 4条 )CJNE A, #data, rel CJNE A, direct, relCJNE Rn, #data, relCJNE Ri, #data, rel我们在编写汇编语言源程序时,可以直接写成: CJNE A, #data, 标 号CJNE A, direct, 标 号CJNE Rn, #data, 标 号CJNE Ri, #data, 标 号 (3)减 1条 件 转 移 指 令 ( 2条 )DJNZ Rn, relDJNZ direct, rel我们在编写汇编语言源程序时,可以直接写成:DJNZ Rn,标号DJNZ direct,标号 例:编程将片外RAM地址为4100H-41FFH的256个单元从小到大依次设置成0H-0FFH MOV R0,#0FFH MOV DPTR, #4100H CLR A LOOP: MOVX DPTR,A INC A INC DPTR DJNZ R0,LOOP MOVX DPTR,A 3子程序调用和返回 (1)调 用 指 令 ( 2条 ) LCALL addr16 ; 长 调 用 指 令 ACALL addr11 ; 短 调 用 指 令上 面 两 条 指 令 都 是 在 主 程 序 中 调 用 子 程 序 , 两 者 的 区 别 :对 短 调 用 指 令 , 被 调 用 子 程 序 入 口 地 址 必 须 与 调 用 指 令 的下 一 条 指 令 的 第 一 字 节 在 相 同 的 2KB存 储 区 之 内 。使 用 时 可 以 用 : LCALL 标 号 ; 标 号 表 示 子 程 序 首 地 址 ACALL 标 号 来 调 用 子 程 序 。 (2)返 回 指 令 ( 2条 )子 程 序 执 行 完 后 必 须 回 到 主 程 序 , 如 何返 回 呢 ? 只 要 执 行 一 条 返 回 指 令 就 可 以 了 。RET ; 子 程 序 返 回 指 令RETI ; 中 断 子 程 序 返 回 指 令两 者 不 能 互 换 使 用 。 4. 空 操 作 指 令 ( 1条 ) NOP 例:利用子程序调用编写令20H-2AH,30H-3EH,40H-4FH 三个区域清零的程序 ORG 1000H MOV SP,#70H MOV R0,#20H MOV R2,#0BH ACALL ZERO MOV R0,#30H MOV R2,#0FH ACALL ZERO MOV R0,#40H MOV R2,#10H ACALL ZERO ZERO: MOV R0,#00H INC R0 DJNZ R2,ZERO REI END 例:从P1口的P1.0管脚输出周期为10个机器周期的方波 CLR P1.0 LOOP: CPL P1.0 NOP NOP SJMP LOOP
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!