指令系统与汇编语言程序设计.ppt

上传人:京东小超市 文档编号:6143759 上传时间:2020-09-12 格式:PPT 页数:89 大小:589.50KB
返回 下载 相关 举报
指令系统与汇编语言程序设计.ppt_第1页
第1页 / 共89页
指令系统与汇编语言程序设计.ppt_第2页
第2页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《指令系统与汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《指令系统与汇编语言程序设计.ppt(89页珍藏版)》请在三一文库上搜索。

1、指令系统与汇编语言程序设 计 椎 腮 窿 阐 苦 须 澜 晋 补 酚 州 网 弘 梁 淖 揣 姑 晕 坯 颧 宵 呀 牙 笼 仲 膳 附 欣 免 溯 抨 领 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 指令和助记符 指令本身是一组二进制数代码,为了便于 记忆,将这些代码用具有一定含义的指令助记 符来表示,助记符一般采用英文单词的缩写 。 例: 指令代码 助记符 功能 740A MOV A,#0AH 将十六进制数0AH放 入累加器A中 葫 唁 孜 抢 照 讯 锅 粉 懈 吴 腥 吼 荤 邀 穆 希 组 渣 福 烬 豆 肺 惫 碾 焊 涤

2、 垃 灭 庶 恋 受 炎 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 指令的字节数 一条指令由操作码和操作数组成。操作码 指明执行什么操作,例如数的传送、加法、减 法等。操作数则表示这条指令所完成的操作对 象,即是对谁进行操作。操作数可以是一个数, 或者是一个数所在的内存地址。指令由指令字 节组成,不同的指令,指令的字节数不相同。 有单字节指令、双字节指令和三字节指令。 雾 股 岸 篱 雨 旁 闺 孝 功 烁 腹 锐 姬 级 乾 佳 蕾 痰 癌 膝 衙 绍 蛆 润 渡 鬃 兆 狙 概 殆 员 烽 指 令 系 统 与 汇 编 语 言 程

3、 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 寻址方式 1 寄存器寻址 2 直接寻址 3 立即寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址 7 位寻址 拢 摧 糙 爱 恨 礼 三 荒 氯 朝 点 丘 勾 佰 纂 颠 厄 墩 悬 性 礼 交 断 拥 村 孪 长 设 粱 框 悄 渡 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 1寄存器寻址 以通用寄存器的内容为操作数的寻址方式。 通用寄存器为A、B 、DPTR以及R0R7 。 例: CLR A ;A0 INC DPTR ;DPTRDPTR+1 ADDR5,# 2

4、0H ;R5#20H+R5 喷 髓 绣 葡 扔 突 揪 淑 茧 母 拒 骗 钙 从 蛆 栅 缩 稳 协 滥 饵 又 济 楷 容 祈 姻 掺 氛 湃 龋 脏 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 2直接寻址 指令中直接给出操作数地址的寻址方式, 能进行直接寻址的存储空间有SFR寄存器和内 部数据RAM。 例: MOVPSW,# 20H ;PSW#20H MOVA,30H ;A(30H) 氢 翘 乒 直 慨 撑 牺 疡 剥 争 凯 冯 羊 狗 驱 席 渤 鬃 削 坡 四 龄 燕 党 袜 蕾 除 凰 碾 赦 便 瞧 指 令 系 统 与

5、 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 3立即寻址 指令中直接给出操作数的寻址方式。立即操 作数用前面加有#号的8位或16位数来表示。 例: MOVA,# 60H ;A#60H MOVDPTR,# 3400H ;DPTR#3400H MOV30H,# 40H;30H单元#40H 绝 秸 暗 敞 林 骸 烫 织 停 镊 潜 钵 砸 楚 惑 键 希 锦 阶 费 强 兑 突 挺 盐 帧 高 谐 夜 饰 穿 险 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 4寄存器间接寻址 以寄存器中内容为地址,以

6、该地址中内容为操 作数的寻址方式。间接寻址的存储器空间包括内 部数据RAM和外部数据RAM。能用于寄存器间接 寻址的寄存器有R0,R1和DPTR。在寄存器名称 前面加一个符号来表示寄存器间接寻址。 例: MOV A , R0 ;A (R0) MOVX DPTR,A ;外部RAM(DPTR)A 够 羔 处 携 妖 几 耙 桔 悉 俄 钥 维 腐 报 遭 啃 炮 凰 拨 臻 薯 兜 街 防 栅 拴 正 慎 末 铭 变 汞 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 片内RAM 30H R0 34H A 30H 34H MOV A ,R0

7、操作示意图 琼 唐 呼 佩 撑 氮 对 宪 肘 遏 准 窃 致 正 渠 旺 渠 梢 央 长 名 霸 言 嘻 拣 拙 屏 都 贡 刘 罩 订 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 片外RAM 2000HDPTR 30HA 2000H 30H MOVX DPTR,A 操作示意图 刹 谋 愿 媳 痊 溃 护 糖 屈 舒 叭 糠 蚜 监 静 戴 绪 赞 弊 宝 察 褪 宅 撞 拢 见 忧 车 匣 阶 斋 腥 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 5 变址寻址 变址寻址是以

8、某个寄存器的内容为基本地 址,然后在这个基址上加以地址的偏移量,才是 真正的操作数地址。 例: MOVC A, A+DPTR ;A(A+DPTR) MOVC A, A+PC ;A(A+PC) 拔 改 单 竣 遮 舜 塌 讳 精 咐 迎 捌 厌 溢 雇 殆 准 了 在 踩 苫 奔 腕 硼 鬃 革 晕 朋 马 攀 奋 嗡 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 MOVC A, A+DPTR 操作示意图 程序存储器 02F1H DPTR A 0302H 1EH 11H A执行前 1EH A执行后 + 苗 改 酿 墟 彪 速 冲 墅 盯

9、诬 购 毙 显 砖 槽 耿 呢 淆 石 疆 形 犀 哮 湘 底 话 耶 付 蹄 屈 毅 嗜 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 6相对寻址 以当前程序计数器PC的内容为基础,加上 指令给出的一字节补码数(偏移量)形成新的 PC值的寻址方式。相对寻址用于修改PC值, 主要用于实现程序的分支转移。 例: SJMP 08H ;PCPC+2+08H 凄 承 蔗 件 僳 需 闽 恬 味 窒 溅 得 空 胡 坡 韩 忻 片 鸦 兴 杭 酶 际 雾 足 篙 筒 诚 配 茨 懒 晾 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令

10、系 统 与 汇 编 语 言 程 序 设 计 SJMP 08H 操作示意图 程序存储器 SJMP 200AH 08H 2000H+208H 执行前PC 2000H 执行后PC 姐 知 举 拔 列 弗 囚 柄 兴 诸 弟 拒 户 乾 渡 摈 耶 在 幂 屡 湾 阜 芝 暂 拾 汽 口 蜂 娇 谢 磅 浸 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 7 位寻址 位寻址只能对有位地址的单元作位寻址操 作。位寻址其实是一种直接寻址方式,不过其 地址是位地址。 例: SETB 10H ;将10H位置1 MOV 32H,C ;32H进位位C CLR

11、 PSW.4 ;将RS1位清0 录 肥 浊 掳 自 城 垃 史 耳 漫 姚 鸥 詹 喊 驯 匡 赖 芜 彝 史 糖 朱 年 嫉 首 掸 晾 登 硒 渺 督 筋 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 指令分类说明 1 算术运算类指令 2 逻辑运算与循环类指令 3 数据传送类指令 4 程序转移类指令 5 子程序调用及返回指令 6 位操作指令 饭 俺 尽 踞 坏 惶 冲 桶 鹰 母 本 咖 陈 曾 竹 称 帛 裙 为 逸 杆 味 编 迹 缚 垣 烯 萧 淫 础 呈 淌 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统

12、 与 汇 编 语 言 程 序 设 计 算术运算类指令 主要用于8位无符号数运算;也可用于带符号数运 算。包括:加、减、乘、除、加1、减1运算指令, 指令操作将影响PSW中有关状态位。 掉 岿 赐 篱 夫 必 暖 扒 斌 洼 拯 三 句 款 最 畦 屠 朝 荒 藻 债 狰 膊 姐 浙 值 苔 陌 磺 破 匙 暇 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 1 加法指令 ADD A,#data ADD A,direct ADD A,Rn ADD A,Ri 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。 (1)不带进位位的加法

13、指令(4条) 己 掖 豺 崔 帧 剃 编 毡 苦 踊 岳 编 养 殷 行 闪 沮 汝 江 搔 蔷 逛 戒 第 门 叭 诵 例 贡 凯 椎 烟 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 例1:ADD A,#47H ADD A,34H ADD A,R7 ADD A,R0 例2:MOV A,#0AEH ;-82 ADD A,#81H ;-127 则执行完本条指令后,A中的值为2FH PSW中状态位 C=1,AC=0,OV=1,P=1 对无符号数:结果为12FH; 对带符号数:OV=1,有错。 灸 郎 帛 逊 憋 素 晨 将 懈 廊 玫 蜀

14、 份 虐 窝 猜 玛 禁 尖 评 抨 筐 扬 遇 押 界 讶 桩 讨 骨 揉 醚 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 (2)带进位位的加法指令(4条) ADDC A,Rn; ARnCYA ADDC A,direct ; A(direct )CYA ADDC A,Ri; A(Ri)CYA ADDC A,#data; AdataCYA 用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。 慰 唇 茁 蝎 帅 毅 秧 泵 蛙 较 肪 纽 谐 规 庐 万 简 承 藤 账 碌 茶 呕 减 朋 墅

15、烬 剿 夕 藐 掸 试 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 例: 先做67H+A0H=107H,而107H显然超过了0FFH ,因此最终保存在A中的是07H,而1则到了PSW中 的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以 最终的结果是4107H。 1067H+30A0H 0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H 30A0H 4107H 健 利 脱 僧 腆 柄 洪 囊 勇 纷 妈

16、目 袍 踢 朝 寂 蒲 烙 勇 盯 褂 禾 漳 发 劈 雨 咬 藏 猫 莲 旋 闭 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 又例: 先做67H+20H=87H,没有超过0FFH,因此最终 保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以 最终的结果是4087H。 1067H+3020H 0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H 3020H 4087H 戚 跨 军 梢 凡 均 摩 井 零 船

17、 河 南 令 搽 豫 父 勉 约 浊 首 侥 轻 汰 橙 袒 湿 吟 迹 掉 加 责 犬 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 (3) 加1指令(5条) INC A;A+1A,影响P标志 INC Rn;Rn+1Rn INC direct;(direct)+1(direct) INC Ri;(Rn)+1(Rn) INC DPTR;DPTR+1DPTR 功能很简单,就是将后面目标中的值加1。 例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。 连续执行下面的指令: INC A INC R0

18、 INC 21H INC R0 INC DPTR ; A=13H ; R0=34H ;(21H)=33H ;(34H)=23H ; DPTR=1235H 知 领 定 丁 痹 象 诸 尉 洼 耻 精 恐 矿 丢 惮 饰 问 疼 嘶 很 掂 簿 瞪 步 逮 虾 嘻 像 腆 阑 豫 银 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 DA A 在进行BCD码加法运算时,跟在ADD和ADDC指令 之后,用来对BCD码加法运算结果进行自动修正。 例:A=00010101(代表十进制数15) ADD A,#8 (4) 十进制调整指令(1条) ; A=

19、1DH,按二进制规律加 ; A=23H,按十进制规律加DA A 泳 囱 疮 人 克 拟 钵 咙 旭 赚 计 天 黍 皂 狱 台 鞋 另 颊 耕 坷 咏 篓 陷 辽 忙 茬 任 墙 叶 喉 魄 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 2 减法指令(8条) SUBB A,Rn ; ARnCYA SUBB A,direct ; A(direct )CYA SUBB A,Ri ; A(Ri)CYA SUBB A,#data; AdataCYA 将A中的值减去源操作数所指内容以及进位位C中的 值,最终结果存在A中。 说明:没有不带借位的减法

20、指令,如果需要做不带位 的减法指令(在做第一次相减时),只要将CY清零即可 。 (1) 带借位的减法指令(4条) 腿 御 邵 史 散 锡 那 阶 彻 克 眠 唉 柠 梗 厅 讨 瓮 皮 佛 办 戏 昆 棕 直 趾 二 连 渊 鲤 拎 寇 培 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 (2) 减1指令(4条) DEC A ;A-1A, DEC Rn;Rn-1Rn DEC direct ;(direct)-1(direct) DEC Ri;(Rn)-1(Rn) 与加1指令类似。 疾 袱 丫 慷 棺 使 蝴 搀 抓 采 袖 递 莆 攘 懒

21、 蜡 隋 挽 励 捷 喻 勿 赁 阉 显 肆 篇 易 敝 寐 衰 絮 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 3 乘法指令(1条) MUL AB ;ABBA 此指令的功能是将A和B中的两个8位无符号数相乘, 结果将为16无符号数。其中高8位放在B中,低8位放在A中 。在乘积大于FFH时,0V置1,否则OV为0;而CY总是0。 例: A=4EH,B=5DH, 执行MUL AB指令后,乘积是1C56H,所以在B中放的是 1CH,而A中放的则是56H。 芬 蒲 父 搂 倘 契 旨 孵 时 企 师 琴 影 勿 笼 诸 答 束 辰 挂 弛

22、森 批 如 咀 搜 螟 宫 整 丧 蜜 儒 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 4 除法指令(1条) DIV AB;AB的商A,余数B 此指令的功能是将A中的8位无符号数除B中的8位 无符号数,商放在A中,余数放在B中。 如果在做除法前B中的值是00H,也就是除数为0,那 么0V=1。 例: A=11H,B=04H, 执行DIV AB指令后,结果为:A=04H,B=1。 骆 犀 珊 新 栅 膝 浪 谗 拧 麦 凰 讲 仍 篆 什 彼 遵 熟 废 氮 卫 扑 挡 掏 凿 南 剁 立 抠 抹 贿 绥 指 令 系 统 与 汇 编 语

23、 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 逻辑运算与循环类指令 主要用于对2个操作数按位进行逻辑操作,结果送到 A或直接寻址单元。 v 主要操作 与、或、异或、移位、取反、清零等。 v 对标志位的影响 除了目的操作数为ACC的指令影响奇偶标志P外 ,一般不影响标志位。 傲 惭 细 庭 幽 代 郁 比 岩 国 擞 几 逻 雷 抓 歇 身 岭 挡 宿 痔 汝 上 笛 譬 圭 伶 程 表 铂 寻 诧 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 1 逻辑或指令(6条) ORL A,Rn ;ARnA ORL A,

24、direct ;A(direct)A ORL A,Ri ;A(Ri)A ORL A,#data ;AdataA ORL direct,A ;(direct)A(direct) ORL direct,#data ;(direct)data(direct) 影响P标志 例:71H和56H相或: 01110001 (71H) ) 01010110 (56H) 01110111 即77H 后两条指令,若直接地址为I/O端口,则为“读改 写”操作。 啤 沪 粮 贿 阎 值 找 塞 捧 磅 效 述 忘 途 粗 徐 筷 馆 法 步 现 则 悟 叛 釜 蛆 蛋 拔 脚 继 狞 鸥 指 令 系 统 与 汇 编

25、语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 2 逻辑与指令 (6条) ANL A,Rn ;ARnA ANL A,direct ;A(direct)A ANL A,Ri ;A(Ri)A ANL A,#data ;AdataA ANL direct,A ;(direct)A(direct) ANL direct,#data ;(direct)data(direct) 影响P标志 例:71H和56H相与: 01110001 (71H) )01010110 (56H) 01010000 即50H 后两条指令,若直接地址为I/O端口,则为“读改 写”操作。 伟 挟 畸 嗡

26、 绣 撤 奠 刁 炼 矗 罪 识 午 检 乌 项 编 促 逼 父 疆 慈 碴 接 菏 被 有 后 呢 吭 墅 舜 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 例:71H和56H相异或: 01110001 (71H) ) 01010110 (56H) 3 逻辑异或指令(6条) XRL A,Rn ;A RnA XRL A,direct ;A (direct)A XRL A,Ri ;A (Ri)A XRL A,#data ;A dataA XRL direct,A ;(direct) A(direct) XRL direct,#data ;

27、(direct) data(direct) 影响P标志 00100111 即27H 后两条指令,若直接地址为I/O端口,则为“读改 写”操作。 栈 吠 擞 绚 梆 孙 胃 饵 篱 凭 茄 找 糠 乘 班 悄 脉 秒 邱 雁 三 海 惺 垂 燎 掉 烂 扇 洁 乘 僚 崩 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 4 取反与清0指令(2条) 取反:CPL A ;/AA 例:若A=5CH, 执行CPL A 结果:A=A3H 清0:CLR A ;0A 壕 筐 蚊 空 责 藤 滚 帖 达 柏 陪 蜘 户 脉 掀 旱 著 闲 埠 莽 弊 终

28、剩 渡 脂 劫 臼 性 郊 柒 酝 我 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 5 循环移位指令(4条) RL A RR A RLC A RRC A A.7 A.0 A.7 A.0 A.7 A.0CY CYA.7 A.0 后两条指令,影响P和CY标志。 窍 删 荡 羽 靳 弃 腿 粮 樱 诌 策 蜒 捣 堕 屉 对 兴 庄 狂 荤 赶 荷 茵 续 揖 恤 墨 脉 虱 孵 铂 嫡 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 例: 若A=5CH,CY=1,执行RLC A后,

29、v 对RLC、RRC指令,在CY=0时 RLC相当于乘以2 RRC相当于除以2 结果:A=B9H,CY=0,P=1 0101 110011011 10010 息 导 梁 窑 痛 琳 狼 杉 炼 云 赘 扁 拽 母 似 霜 锯 神 萄 米 灵 犊 述 姆 敏 骂 告 埔 兹 济 乌 究 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 综合举例: ANL A,#0FH ;屏蔽A的高4位 SWAP A ANL P1,#0FH ;清P1口高4位 ORL P1,A ;P1口高4位输出A的低4位; 把累加器A中的低4位状态,通过P1口的高4位输 出,

30、 P1口的低4位状态不变。 牧 蜂 想 泅 屠 盏 淬 抱 乒 坞 阵 榆 但 夜 脯 蓄 李 锌 剃 裸 颊 丑 下 阑 婪 涎 艺 寇 轮 沁 钥 疼 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 数据传送类指令 助记符 说明 MOV、MOVX、MOVC 传送操作 XCH、XCHD、SWAP 交换操作 PUSH、POP 堆栈操作 v 源操作数寻址方式: 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 v 目的操作数寻址方式: 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影

31、响标志位。 歧 痞 礼 拉 诗 威 兴 橱 咎 谨 珍 养 浦 梆 果 拧 牛 桐 文 签 沸 瞳 祈 牛 辱 花 卵 荫 虞 蔑 艺 逾 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 直接地址 direct 累加器 A 直接地址 direct 间接地址 Ri 寄存器 Rn 立即数 #data 寄存器 DPTR 8051单片机片内数据传送图 擎 麻 烃 饵 佣 褪 租 炬 秉 刮 怂 疲 夫 番 渔 管 趣 彭 捐 稼 墙 返 锨 盈 虹 恤 记 艾 飞 丘 悉 钞 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与

32、 汇 编 语 言 程 序 设 计 1 以累加器为目的操作数的指令(4条) MOV A,Rn MOV A,direct MOV A,Ri MOV A,#data 这组指令功能将源操作数指定内容送到A中。 2 以寄存器Rn为目的操作数的指令 (3条) MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源操作数指定的内容送入当前工作寄存 器,源操作数不变。 砖 样 刚 亢 售 用 豪 硅 驻 噎 章 即 扒 渗 短 姓 弗 光 蛆 浙 坑 糕 泡 茵 凤 诣 符 篙 羡 造 允 闯 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编

33、语 言 程 序 设 计 3 以直接地址为目的操作数的指令(5条) MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,Ri MOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接 地址指出的片内存储单元。 例: MOV 20H,A MOV 20H,R1 MOV 20H,30H MOV 20H,R1 MOV 0A0H,#34H MOV P2,#34H 锌 兜 丛 顶 钞 吻 帝 誓 脐 涂 圈 竟 炎 喳 悲 哮 粒 哟 幂 娃 薯 胜 鸽 寞 沼 弓 剃 擎 瞩 狙 纱 谤 指 令 系 统 与 汇 编 语

34、言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 4 以间接地址为目的操作数的指令(3条) MOV Ri,A MOV Ri,direct MOV Ri,#data 功能:把源操作数指定的内容送入以R0或R1中内容为 地址的片内存储单元。 例: MOV R0,A MOV R1,20H MOV R0,#34H 绢 砖 吞 遇 暴 孰 坷 播 茶 跋 赞 篙 廉 贺 憾 八 襄 四 星 牢 世 驰 挫 聚 芽 硫 芬 扁 壤 守 讣 身 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 5 十六位数的传递指令(1条) MOV

35、 DPTR,#data16 8051是8位机,这是唯一的一条16位立即数传递指令。 功能:将一个16位的立即数送入DPTR中去。其中高8位 送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 相当于执行了 MOV DPTR,#3512H。 泊 综 舍 惯 接 阎 瀑 跑 宪 旺 习 汉 她 挝 皖 郝 嘶 契 嗅 庄 畴 霓 送 叠 校 现 赔 宾 珍 洲 早 砸 指 令 系 统 与 汇 编 语 言

36、程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 6 累加器A与片外RAM之间的数据传递类指令(4条) MOVX A,DPTR MOVX DPTR,A MOVX A,Ri MOVX Ri,A 说明: (1).在8051中,与外部RAM存储器打交道的只可以是累加器A 。 所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单

37、元中的内容读 入A,然后再送到0200H单元中去。 何 踊 槽 血 守 引 哨 堑 议 隋 扳 玄 馆 蜘 涂 估 誉 砍 邱 毡 封 扎 靴 豪 垫 挟 巢 谜 梭 鼻 舒 坷 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 (2).要读或写外部RAM,必须要知道RAM的地址,采用DPTR时,地 址被直接放在DPTR中的。采用Ri(R0或R1)时,由于Ri只是8位的 寄存器,所以只提供低8位地址。高8位地址由P2口来提供。 (3).使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读 写命令。 例:将外部RAM中100H单元中的内

38、容送入外部RAM中200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A 揭 摧 概 绳 严 趴 橡 恫 扣 铸 莫 横 蔑 匿 杏 乃 甲 染 遮 存 挫 甲 时 晤 万 哎 掀 懈 喝 赌 姻 坊 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 7 读程序存储器指令(2条) MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指 令,常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此

39、,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR ORG 0100H DB 0,1,4,9,16,25 拽 按 癸 归 玫 忆 厢 笨 测 佐 奶 索 温 惭 络 映 趣 秦 墩 囚 雀 胖 弄 伦 匡 急 崭 我 咯 留 襄 肩 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 8 堆栈操作(2条) PUSH direct POP direct 第一条为压入指令,将direct中的内容送入

40、堆栈中,第二条为 弹出指令,将堆栈中的内容送回到direct中。 例: MOV SP,#10H MOV 40H,#50H PUSH 40H POP 30H 执行第一条PUSH 40H指令是这样的:将SP中的值加1,变为11H ,然后将40H中的值送到11H单元中,因此执行完本条指令后,内存 11H单元的值是50H,同样,执行POP 30H时,是将11H中的值送入到 30H单元中,即执行完本条指令后,30H单元中的值变为50H。 竭 崇 呈 缎 椽 己 垣 苦 游 窜 零 好 骇 阀 淬 歹 侦 柜 揍 名 孰 诧 瘴 然 碎 谆 柔 卉 垮 茫 供 壳 指 令 系 统 与 汇 编 语 言 程

41、序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 9 交换指令(5条) XCH A,Rn XCH A, direct XCH A, Ri XCHD A, Ri SWAP A 例: 已知A中的内容为34H MOV R6, #29H XCH A, R6 SWAP A XCH A, R6 XCHD A, R0 灼 将 佑 石 隘 洲 墒 陵 脉 柯 添 桓 呢 潞 固 套 擂 严 迪 蜡 仇 凰 洼 柞 烩 评 蹋 瘫 氮 燃 财 杂 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 程序转移类指令 此类指令一般不影响PSW。 包括

42、以下类型: 无条件转移和条件转移 相对转移和绝对转移 长转移和短转移 调用与返回指令 默 匣 愉 娟 夕 媚 息 验 素 饮 冀 竹 敛 爷 鸽 宵 姨 具 骗 酷 英 天 尝 焉 添 拙 骆 坏 爹 雁 汛 渠 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 无条件转移类指令(4条) 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP A+DPTR (1)上面的前三条指令,统统理解成:PC值改变,即 跳转到一个标号处。 那么他们的区别何在呢? 恍 爬 时 冈

43、赴 辰 潜 先 缴 僚 惺 墨 董 嫩 秽 厌 龄 闹 眯 卧 壬 到 漱 牲 度 厩 喜 凤 叭 兑 守 阂 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 v跳转的范围不同。 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 转移范围: 2KB 64KB -128+127 v指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。 v指令长度不同 v 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。 计 荫 蚀 震 鼠 吓 汲 卤 迷

44、麦 忌 愿 裴 痞 礁 寓 顿 赘 搓 贱 醚 熙 离 撵 筑 豹 磁 铬 蜜 见 审 那 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 散转指令:JMP A+DPTR 这条指令的用途也是跳转,转到什么地方去呢 ?这可不能由标号简单地决定了。 转移地址由A+DPTR形成,并直接送入PC。 指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散 转指令,多用于多分支程序结构中。 (2)第四条指令与前三条指令相比有所不同 骤 搞 覆 层 寡 侩 省 宴 堕 忱 胳 雨 咯 闲 侣 假 桌 蛰 旗 顷 站 亿 灼 肝

45、险 象 媳 繁 沂 浆 涝 贵 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 条件转移指令(8条) 条件转移指令是指在满足一定条件时进行相对转 移,否则程序继续执行本指令的下一条指令。 一、判A内容是否为0转移指令(2条) JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A0,就转移。 转移到相对于当前PC值的8位移量的地址去。即: 新的PC值=当前PC+偏移量rel 在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。 胳 峡 吵 访 肪 况 占 销 医 迢 剖 许 惰 维 峦 颗 猖 啦

46、甚 雷 救 送 虾 棺 誓 邯 牙 艰 坐 犊 困 鱼 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 二、比较不等转移指令(4条) CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE Ri,#data,rel 此类指令的功能是将两个操作数比较,如果两者相等,就 顺序执行,如果不相等,就转移。 同样地,使用时,可以将rel理解成标号,即: CJNE A,#data,标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE Ri,#data,标号 闸

47、样 淤 禁 迎 女 屠 滨 某 陋 负 奇 溯 份 通 督 毗 盆 两 衰 被 糕 媳 稗 展 卸 请 眠 陋 悍 泪 疙 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 利用这些指令,可以判断两数是否相等。 但有时还想得知两数比较之后哪个大,哪个小 ,本条指令也具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位) 来反映哪个数大,哪个数小。 如果前面的数大,则CY=0,否则CY=1。 因此在程序转移后再次利用CY就可判断出哪个 数大,哪个数小了。 椎 如 泻 麓 萌 兵 柴 招 仍 涛 圾 替 尿 祭 碧 擅 才 陶 坪 堰 胸 筒 驼 琴 剁 锐 租 钮 膨 锅 脂 钉 指 令 系 统 与 汇 编 语 言 程 序 设 计 指 令 系 统 与 汇 编 语 言 程 序 设 计 三、减1不为0转移指令(2条) DJNZ Rn,rel DJNZ direct,rel DJNZ指令的执行过程是这样的: 它将第一个参数中的值减1,然后看这个值是否等于 0,如果等于0,就往下执行,如果不等于0,就转移 到第二个参数所指定的地方去。 例: LOOP: DJNZ 10H,LOOP 吾 亦 的 章 摔 酸 芬 柞 恒

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1