收藏 分享(赏)

专题四第三章计算机硬件技术基础赵晓安.ppt

上传人:hwpkd79526 文档编号:4530227 上传时间:2019-01-02 格式:PPT 页数:102 大小:571.50KB
下载 相关 举报
专题四第三章计算机硬件技术基础赵晓安.ppt_第1页
第1页 / 共102页
专题四第三章计算机硬件技术基础赵晓安.ppt_第2页
第2页 / 共102页
专题四第三章计算机硬件技术基础赵晓安.ppt_第3页
第3页 / 共102页
专题四第三章计算机硬件技术基础赵晓安.ppt_第4页
第4页 / 共102页
专题四第三章计算机硬件技术基础赵晓安.ppt_第5页
第5页 / 共102页
点击查看更多>>
资源描述

1、,计算机硬件技术基础,主讲教师 赵晓安,计算机科学与软件学院计算机基础教学部,专题四 MCS-51指令系统第三章,本专题是全书的重点, 是汇编语言程序设计的基础。,学习指令系统重点要掌握以下几点:1、指令功能2、寻址方式3、操作数的位数和存储结构4、对PSW的影响5、指令与存储区的对应关系6、各类指针及其指向的地址范围7、转移指令的转移范围8、指令字节数和机器周期数, 本章主要介绍单片机的寻址方式及指令系统,是必须掌握的内容。 一台计算机所有指令的集合,称为该计算机的指令系统。 各种计算机都有专用的指令系统。学时分配:2学时 140+4649+52+532学时 41-45+50+5154100

2、,第三章 单片机的指令系统,第三章 单片机的指令系统,3.1 MCS-51 指令系统概述 3.2 寻址方式 3.3 MCS-51 单片机的指令系统,3.1 MCS-51 指令系统概述,3.1.1 指令格式 3.1.2 指令字长和指令周期 3.1.3 指令分类,汇编语言指令格式 机器语言指令格式,3.1.1 指令格式,一条用助记符表示的汇编语言指令,操作码,操作数,指令的功能,指令的操作对象,ADD A , #10H ;ADD为操作码,A及#10H为操作数,汇编语言指令,汇编语言指令格式,标号:操作码助记符 目的操作数,源操作数;注释例如:Loop:MOV A,R0; (R0) -(A),机器语

3、言指令格式,双字节:,单字节:,操作码,操作码 操作数或寻址方式,操作码,操作数或寻址方式,例:ADD A , #10H,或,指令字长有三种:单字节 RET双字节 MOV A,#68H三字节 MOV 30H,46H,3.1.2 指令字长和指令周期,指令周期是指执行一条指令所需要的时间1 机器周期指令 2 机器周期指令4 机器周期指令,P318附录II 附表1,3.1.3 指令分类,按指令功能分类,按指令字长分类,按指令执行时间分类,3.2 寻址方式,寻址方式:7种 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址间接寻址 相对寻址 位寻址 寻址方式与寻址空间 MCS-51单片机的两个突出特

4、点,寻址:1、寻找操作数2、为PC指针寻找目标地址,寄存器寻址操作数存放在寄存器中,MOV A,R0 MOV R0,#01001111B,工作寄存器(00H1FH)RS1 RS0 寄存器组 片内RAM地址 寄存器0 0 第0组 00H07H R0R70 1 第1组 08H0FH R0R71 0 第2组 10H17H R0R71 1 第3组 18H1FH R0R7,SETB RS0 MOV R3,#56H,寄存器为 R0R7,A,DPTR,C,AB,例如:MOV A , R3 ;机器码为 0EBH 指令功能是把当前R3中的操作数送累加器A。指令执行示意图如图33所示。设(R3)=12H,直接寻址

5、指令中直接给出操作数的地址,功能最强,可访问种地址空间 内部数据存储器地址空间(): MOV A,00HMOV 30H,20H 特殊功能寄存器地址空间,唯一方式 MOV A,90H MOV A,B 位地址空间 MOV C,00H,例: MOV A ,30H;机器码为E530H指令功能是把直接地址30H单元的内容送累加器A,即(30H) (A)如图31所示。,34H,34H,寄存器间接寻址,将指定的寄存器的内容为地址,由该地址所指定的单元内容作为操作数。mov A,R0,(R0)=31H,(R0)=(31H),(A)=02H,指针,例如: MOV A ,R1 ;机器码 E7H设(R1)=60H

6、, (60H)=50H , 执行结果(A)=50H,该指令执行过程如图34所示。,立即寻址在指令中直接给出操作数,例: MOV A,#7Ah; 747AH 把立即数7AH送累加器A,指令执行示意图如图3-2所示。,例: MOV DPTR,#1234h(DPH)=12H (DPL)=34H,注意:立即数前加“ # ”号,以区别直接地址。 例如: MOV A,#30H ;(A) 30HMOV A, 30H ; (A) (30H),变址间接寻址,基址寄存器变址寄存器的间接寻址方式DPTR/PC AMOVC A, A+DPTR(A) (DPTR) + (A)MOVC A, A+PC(A) (PC) +

7、 (A) )JMP A+DPTR(PC)=(A)+(DPTR),MOVC A ,A+PC ;83H 设执行指令之前(A)= 50H 指令功能是把该指令当前地址PC值与A累加器内容相加形成操作码地址3F51H,3F51H中的内容37H送A累加器。,PC 当前值,相对寻址,以当前的PC值为基准,加上指令中给出的相对偏移量(rel)形成有效的转移地址。jc Loop;,rel,补码 -128,127,JC rel; 4085H 设rel=85H ,Cy=1,目标地址,PC当前值,位寻址 bit,位寻址范围:1、内部RAM的位寻址区,共16个单元的128位,字节地址为20H2FH,位地址为00H7FH

8、。可用直接位地址或字节地址加位的表示方法。,例如: MOV C , 7AH 或 MOV C , 2FH2,2、特殊功能寄存器SFR可供位寻址的专用寄存器共11个,实有位地址位83位。位地址有4种表达方式 。以对程序状态寄存器PSW辅助进位位AC进行操作为例: PSW Cy AC F0 RS1 RS0 OV P D0HD7H D6H D0H,1)直接使用位地址 3)单元地址加位的表示法MOV C ,0D6H MOV C ,0D0H6 2)位名称表示法 4)专用寄存器符号加位的表示法MOV C , AC MOV C , PSW6,寻址方式与寻址空间,1、内部数据存储器的寻址方式1) 00H1FH

9、寄存器寻址 4组R0 R7 Rn直接寻址 direct寄存器间接寻址 R0,R1例:(01H) (02H)MOV 02H,01H ;源寻址和目的寻址均为直接寻址MOV R2,01H ;源寻址为直接寻址,目的寻址为寄存器寻址MOV R0,#01HMOV 02H,R0;源寻址为寄存器间接寻址,目的寻址为直接寻址,内部数据存储器与内部I/O口统一编址,T1,2) 20H 2FH 可位寻址区的寻址方式字节寻址方式: 直接寻址 direct寄存器间接寻址R0,R1位寻址: bit 直接寻址 例: MOV 26H,C ; 位寻址 (26H)1位MOV 26H,A ;字节寻址(26H)8位,3) 30H 7

10、FH 数据缓冲区的寻址方式字节寻址方式: 直接寻址 direct寄存器间接寻址R0,R1 例:MOV 56H,A ;字节寻址(56H)8位 MOV R0,#66HMOV R0,#56H可以将用户堆栈设在该区内,堆栈指针SP,2、SFR 及I/O口的操作只能直接寻址例: P1 口 90H MOV A,90H MOV A,P1MOV P1,A 3、关于A累加器有两种寻址方式:MOV A,#23H ; A寄存器寻址 PUSH ACCPOP 0E0H,;直接寻址,统一编址,4、可做片内RAM的指针有:R0,R1, 四个组共有8个预先设置RS1、RS0,以选定组。SETB RS0CLR RS1; 1组M

11、OV R0,#34H ;R0的地址是?SETB RS1 ; 3组MOV R0,#68H ; R0的地址是?R0/R1指向的地址范围:00H7FH,片外数据存储区和外部扩展的I/O口的寻址方式 指针:R0,R1 8位DPTR 16位 指令助记符: MOVX 例: MOV DPTR,#2000HMOV A,#34HMOVX DPTR,A,MOV P2,#20H MOV R0,#00H MOV A,#34H MOVX R0,A,外部数据存储器的地址,或I/O口的地址 16位,只能寄存器间接寻址,或,高8位地址,低8位地址,统一编址,R0/R1指向的地址范围:00H0FFH,T2,3.3 MCS-51

12、 单片机的指令系统,指令描述符号简介 指令分类: 数据传送类指令(29)传送类指令举例 算术运算类指令(24) 逻辑运算类指令(24) 控制转移类指令 (17) 布尔处理类指令(17),指令描述符号(1) P68,Rn-R0R7 工作寄存器R0R7,n=07 direct- 8位直接地址,表示直接寻址方式 Ri- 只能是R0或R1,所以i=0,1 #data - 8位立即数,数据范围00HFFH #data16 - 16位立即数,数据范围0000HFFFFH addr16 - 16位目标地址 addr11 - 低11位目标地址,指令描述符号(2),rel 8位带符号地址偏移量 , -128,1

13、27补码 bit 位地址 $ 当前指令地址 ( ) ( ( ) ),数据传送类指令(1) 内部,A 累加器,direct 直接 寻址,Ri 间接 寻址,Rn 寄存器,data 立即数,数据传送类指令(2),mov A,Rn ; (A) (Rn) n=07 mov A,direct ; (A) (direct) mov A, Ri ; (A) (Ri) i=0,1 mov A,#data ; (A) #data mov Rn,A ; (Rn) (A) mov Rn,direct ; (Rn) (direct) mov Rn,# data; (Rn) #data,数据传送类指令(3),mov di

14、rect,A ; (direct) (A) mov direct,Rn ; (direct) (Rn) n=07 mov direct,direct ; (direct) (direct) mov direct, Ri ; (direct) (Ri) i=0,1 mov direct,#data ; (direct) #data mov Ri,A ; (Ri) (A) mov Ri,direct; (Ri) (direct) mov Ri,# data ; (Ri) #data,MOV R1,R0,MOV R3,R0,MOV R1, R0,MOV R1, R0,数据传送类指令(4) 交换指令,

15、xch A, Rn ; (A) (Rn) n=07 xch A,direct ; (A) (direct) xch A, Ri ; (A) (Ri) i=0,1 xchd A,Ri ; (A 03 ) ( (Ri)03 ) swap A; (A 03 ) (A 47 ),pop direct ; (direct) (sp) ,(sp) (sp)-1 push direct ; (sp) (sp)+1,(sp) (direct),数据传送类指令(5) 堆栈操作,1、堆栈 一种数据结构,是 “先进后出”的线性表。 2、堆栈操作: 压入 PUSH , 弹出 POP 3、堆栈区: 占片内RAM 中连续

16、的存储单元复位后,系统自动将SP指针指向07H用户可将堆栈区设在30H7FH数据缓冲区内,MOV SP,#5FH,堆栈有两种类型:向上生长型和向下生长型,如图2-5所示。 向上生长型堆栈,栈底在低地址单元。随着数据进栈,地址递增,SP 的内容越来越大,指针上移;反之,随着数据的出栈,地址递减,SP的内容越来越小,指针下移。如(b)图所示。,栈顶,栈顶,MCS-51属向上生长型堆栈,这种堆栈的操作规则如下: 进栈操作:先SP加1,后写入数据。 出栈操作:先读出数据,SP减1。,向下生长型堆栈,栈底设在高地址单元。随着数据进栈,地址递减,SP内容越来越小,指针下移;反之,随着数据的出栈,地址递增,

17、SP内容越来越大,指针上移。其堆栈操作规则与向上生长型正好相反。如(a)图所示。,堆栈的使用有两种方式:一种是自动方式,即在调用子程序或断点时,断点地址自动进栈。程序返回时,断点地址再自动弹回PC。这种操作无需用户干预。另一种是指令方式,即使用专用的堆栈操作指令,执行进出栈操作,其进栈指令为PUSH,出栈指令为POP。 例如:保护现场就是一系列指令方式的进栈操作;而恢复现场则是一系列指令方式的出栈操作。需要保护多少数据由用户决定。,POP 01H POP PSW POP ACC,PUSH ACC PUSH PSW PUSH 01H,保护现场:,恢复现场:,举例:,数据传送类指令(6) 外部,m

18、ovx A, Ri ; (A) (Ri) i=0,1 movx A,DPTR ; (A) (DPTR) movx Ri,A; (Ri) (A) movx DPTR,A ; (DPTR) (A) movc A,A+DPTR ; (A) (A)+(DPTR) movc A,A+PC; (PC) (PC)+1 ,(A) (A)+(PC),mov DPTR,#data16; (DPTR) #data16,内部 16位,外部数据,外部程序,传送类指令举例: 例31已知(R0)=30H,问执行如下程序,A、R4、30H和31H单元的内容是什么。 MOV A , #10H MOV R4 ,#36H MOV

19、R0 ,#7AH MOV 31H ,#01H 解:8031执行上述指令后的结果为:,(A)=10H (R4)=36H (30H)=7AH (31H)=01H,例32设内部RAM中30H单元的内容为40H ,40H单元的内容为10H,P1口作输入口,其输入数据为0CAH,程序及执行后的结果如下: MOV R0,#30H ;单元地址30H送R0中 MOV A ,R0 ;R0 间址,将30H单元内容送A MOV R1 ,A ;A送R1 MOV B ,R1 ;R1间址,将40H单元内容送B MOV R1,P 1 ;将P1内容送40H单元 MOV P2 , P1 ;将P1内容送P2执行结果:(R0)=3

20、0H , (R1)=40H , (A)=40H , (B) =10H ,(P1)=0CAH (40H)=0CAH , (P2)=0CAH,例33已知片外RAM 的70H单元中的一个数X ,需送到片外RAM的 1010H单元,试编写程序。 解: ORG 1000HMOV R0 ,#70HMOV DPTR ,#1010HMOVX A ,R0MOVX DPTR ,ASJMP $END,外部RAM之间不能直接传送数据,必须通过累加器A传送,MOVX DPTR,R0,例35 设(30H)=X ,(40H)=Y ,试利用堆栈区域实现30H和40H单元中的数据交换。解:堆栈区是片内RAM的一个数据区,进栈和

21、出栈的数据符合“先进后出”的原则。 MOV SP ,#50H ;设栈底(栈底不存数) PUSH 40H ;(51H) (40H) PUSH 30H ;(52H) (30H) POP 40H ;(40H) (52H) POP 30H ;(30H) (51H),例36 已知外部RAM 2020H单元中有一个数X, 内部RAM 20H单元一个数Y,试编出可以使它们互相交换的程序。解: MOV P2 , #20H MOV R1 , #20HMOVX A , R1XCH A , R1MOVX R1 ,ASJMP $END,指向内部 RAM 20H单元,指向外部 RAM 2020H单元,没讲,例37 已知

22、片内50H单元中有一个09的数,试编程把它变为相应的ASCII码的程序。 解:因为09的ASCII码为3039H 程序如下: MOV R0 , #50HMOV A , #30HXCHD A , R0MOV R0 , ASJMP $END,50H,A,R0,例38 把01H单元内容送02H单元,有几种不同的实现方法。 MOV 02H ,01H ; 直接寻址 3字节 2周期 MOV A ,01H ;直接寻址 +寄存器寻址MOV 02H , A ;4字节 2周期 MOV A , R1 ; 寄存器寻址 2字节 2周期MOV R2 , A MOV R0 ,#01H ; 4字节 3周期MOV 02H ,R

23、0 ; 间接寻址 PUSH 01H ; 栈操作 4字节 4周期POP 02H第三种方法占存储空间少,执行周期短。,算术运算类指令,程序状态字 PSW 加法指令 减法指令 乘/除指令,Cy:进位标志;布尔累加器 AC:辅助进位标志(半进位) F0:用户标志 RS1/RS0:寄存器选择 OV:溢出标志 P:奇偶标志,程序状态字 PSW,加法指令,不带进位的加法指令 带进位的加法指令 加 1 指令 二-十进制调整指令,不带进位的加法指令,add A,Rn ; (A)-(A)+(Rn) add A,direct ;(A)-(A)+(direct) add A,Ri ;(A)-(A)+(Ri) add

24、A,#data ;(A)-(A)+#data,带进位的加法指令,addc A,Rn ;(A)-(A)+(Rn)+(C) addc A,direct ;(A)-(A)+(direct) +(C) addc A,Ri ;(A)-(A)+(Ri) +(C) addc A,#data ;(A)-(A)+#data +(C),举例,加 1 指令,inc A ;(A)(A)+1 inc Rn ;(Rn)(Rn)+1 inc direct ;(direct)(direct)+1 inc Ri ;(Ri) )(Ri) )+1 例:mov 30h,#2mov r0,#4inc r0mov r0,#5inc r0

25、,二-十进制调整指令,DA A 调整原则: 形式上非BCD码 需要加 06H、60H、66H调整 形式上是BCD码时: CY AC 调整原则0 0 不调整0 1 +06H1 0 +60H1 1 +66H,举例:BCD码减法,减法指令,subb A,Rn ;(A)-(A)-(Rn)-(C) subb A,direct ;(A)-(A)-(direct) -(C) subb A,Ri ;(A)-(A)-(Ri) -(C) subb A,#data ;(A)-(A)-#data -(C)减 1 指令,减 1 指令,dec A ;(A)(A)-1 dec Rn ;(Rn)(Rn)-1 dec dire

26、ct ;(direct)(direct)-1 dec Ri ;(Ri) )(Ri) )-1,举例:,乘/除指令,无符号数乘法指令 mul AB ; (A)(B) (B)(A) 若 (B) 0 则 OV=1 ,否则 OV=0 ; Cy 0 无符号数除法指令 div AB ; (A)/(B)=(A),余数(B) Cy 0;若 (B) = 0 则 OV=1,逻辑运算类指令,单字节逻辑操作数运算指令双字节逻辑操作数运算指令,单字节逻辑操作数运算指令,累加器A清“零”指令 累加器A取反指令 累加器A循环左移指令 累加器A连同进位位循环左移指令 累加器A循环右移指令 累加器A连同进位位循环右移指令,累加器

27、A清“零”指令,CLR A; (A) 0; 累加器A清: CLR A; CLR C SUBB A,0E0H,累加器A取反指令,CPL A (A)=55H CPL A (A)=0AAH CLR A CPL A INC A,累加器A循环左移指令,RL A ; ROTATE LEFT (A)=55H RL A; (A)=0AAH MOV A,#01H RL A RL A RL A RL A,累加器A连同进位位循环左移指令,RLC A (A)=0 (CY)=1 RLC A RLC A RLC A RLC A,累加器A循环右移指令,RR A ; ROTATE RIGHT (A)=08H RR A RR

28、A RR A RR A,累加器A连同进位位循环右移指令,RRC A; (A)=0 (CY)=0 RRC A RRC A RRC A RRC A,双字节逻辑操作数运算指令,逻辑“与”指令逻辑“或”指令逻辑“ 异或”指令,逻辑“与”指令,ANL A,Rn ;(A)(A) (Rn) ANL A,direct ANL A,Ri ANL A,#data ANL direct,A ANL direct,#data,逻辑“或”指令,orl A,Rn ;(A)(A) + (Rn) orl A,direct orl A,Ri orl A,#data orl direct,A orl direct,#data,逻

29、辑“异或”指令,xrl A,Rn ;(A)(A) (Rn) xrl A,direct xrl A,Ri xrl A,#data xrl direct,A xrl direct,#data,布尔处理类指令,布尔数据传送指令 布尔状态控制指令 位逻辑指令 空操作指令 布尔处理示例,布尔数据传送指令,mov C,bit ; (C)(bit)mov bit,C ; (bit)(C),布尔状态控制指令,位清“0”指令 clr C clr bit 位置“1”指令 setb C setb bit 位取反指令 cpl C cpl bit,位逻辑指令,位逻辑与指令 anl C,bit; anl C,/bit;

30、位逻辑或指令 orl C,bit; orl C,/bit;,空操作指令,nop ; (PC) (PC) +1 clr P3.7 nop setb P3.7 nop clr P3.7 nop setb P3.7,布尔处理示例,U(V+W),U BIT 20H.0 V BIT 20H.1 W BIT 20H.2 X BIT 20H.3 Y BIT 20H.4 Z BIT 20H.5 Q BIT 20H.6ORG 0000H Start:mov C,Vorl C,Wanl C,Umov F0,Cmov C,Xorl C,/Yanl C,F0anl C,/Zmov Q,Csjmp $END,控制转移类

31、指令,无条件转移指令 条件转移指令 比较转移指令 循环转移指令 子程序调用与返回指令,无条件转移指令,绝对无条件转移指令 长转移指令 短转移指令 间接转移指令,格式: ajmp addr11; 功能:无条件转向指令中提供的11位地址。转移范围:2K,PC1511不变 例: ajmp Start,绝对无条件转移指令,a10a9a800001,a7a6 a0,长转移指令,格式: ljmp addr16; (PC) addr16 功能:无条件转向指令中提供的16位地址。三字节指令,后两个字节为转移的目标地址.转移范围: 64K 例: ljmp Start,短转移指令,格式: sjmp rel; (P

32、C) (PC)+2, (PC) (PC)+rel 功能:相对转向指令,rel 为一字节补码形式的相对偏移量.转移范围: -128 +127 例: sjmp Loopsjmp $,间接转移指令(散转),格式: jmp A+DPTR; (PC) (A)+(DPTR) 功能:根据A与DPTR的内容转移,转移的 目标地址可变. 例: MOV A,#1ADD A,ACCMOV DPTR,#JMP_TBLJMP A+DPTR JMP_TBL:AJMP LABLE1AJMP LABLE2.,条件转移指令,判零转移指令 判位变量转移指令 判位变量并清零转移指令 判布尔累加器C转移指令 关于rel,判零转移指令

33、,格式: jz rel; rel:8位相对偏移量 功能:(PC)(PC)+2,IF (A)=0 THEN (PC)(PC)+rel ELSE go on格式: jnz rel; rel:8位相对偏移量 功能:(PC)(PC)+2,IF (A) 0 THEN (PC)(PC)+rel ELSE go on,判位变量转移指令,格式: jb bit,rel; rel:8位相对偏移量 功能:(PC)(PC)+3,IF (bit)=1 THEN (PC)(PC)+rel ELSE go on格式: jnb bit,rel; rel:8位相对偏移量 功能:(PC)(PC)+3,IF (bit)=0 THE

34、N (PC)(PC)+rel ELSE go on,判位变量并清零转移指令,格式: jbc bit,rel; rel:8位相对偏移量 功能:(PC)(PC)+3,IF (bit)=1 THEN (PC)(PC)+rel and (bit)=0ELSE go on,判布尔累加器C转移指令,格式: jc rel; rel:8位相对偏移量 功能:(PC)(PC)+2,IF (C)=1 THEN (PC)(PC)+rel ELSE go on格式: jnc rel; rel:8位相对偏移量 功能:(PC)(PC)+2,IF (C)=0 THEN (PC)(PC)+rel ELSE go on,比较转移

35、指令,格式:cjne (目的字节),(源字节),rel 功能:目的字节与源字节比较,不相等则转移,同时,若目的字节=源字节则(C)=0;若目的字节源字节则(C)=1。相等则继续执行。 cjne A,direct,rel; cjne A,#data,rel; cjne Rn,#data,rel; cjne Ri,#data,rel,循环转移指令,格式: djnz Rn,rel; rel:8位相对偏移量 功能:(PC)(PC)+2,(Rn) (Rn)-1IF (Rn)0 THEN (PC)(PC)+rel ELSE go on格式: djnz direct,rel; rel:8位相对偏移量 功能:

36、(PC)(PC)+3, (direct) (direct)-1IF (direct) 0 THEN (PC)(PC)+rel ELSE go on,子程序调用与返回指令,绝对调用指令 acall addr11;(PC) (PC)+2 ,(SP) (SP)+1 (SP) (PC07) ,(SP) (SP)+1,(SP) (PC815) ,(PC010) addr11 ,(PC1115) 不变 lcall addr16 返回指令 ret; (PC815)(SP),(SP) (SP)-1(PC07)(SP),(SP) (SP)-1 举例:,子程序调用与返回指令举例,ORG 0000H Start:

37、mov sp,#6FHmov A,#0acall Sub1 N01: mov A,#0lcall Sub2sjmp $,Sub1:inc Aret Sub2:dec AretEND,SP,6FH,70H,71H,N01L8,N01H8,PC07,PC815,ACALL SUB1 后,(PC)=SUB1,(PC)=N01,RET 后,SP,例315 设20H21H单元存放一个16位二进制数X1(高8位存于21H单元),30H31H单元存放另一个16位二进制数X2(高8位存于31H单元)。求X1+X2 ,和存于20H21H设两数之和不超过16位。 解: ORG 2000H MOV R0 ,#20H

38、 MOV R1 ,#30H MOV A ,R0 ;取被加数低8位 ADD A ,R1 ;求和的低8位 MOV R0 ,A ;存和的低8位 INC R0 ; 指向被加数高8位 INC R1 ; 指向加数高8位 MOV A ,R0 ;取被加数高8位 ADDC A ,R1 ;求和的高8位 MOV R0 ,A ;存和的高8位 SJMP $ ; 停机 END,运算结果 高8位存于21H单元, 低8位存于20H单元。,ORG 2000HMOV R0 ,#20HMOV R1 ,#30HMOV R2, #02CLR C LOOP: MOV A ,R0 ADDC A ,R1MOV R0 ,A INC R0 IN

39、C R1 DJNZ R2,LOOP STOP: SJMP $ END,20H 21H 22H,30H 31H,R0,R1,31H,1FH,88 96H +96 9BH1F 31H,CY=1,CY=1,JNC STOP CLR A ADDC A,#0 MOV R0,A,01H,循环,例316 试分析执行以下程序后,各有关单元的结果。MOV R1 ,#7FHMOV 7EH ,#00HMOV 7FH ,#40HDEC R1DEC R1DEC R1 执行结果:(R1)=7EH (7EH)=0FFH (7FH)=3FH,例320 利用DA指令作十进制减法调整。两个用单字节压缩BCD码表示的十进制数相减,

40、借位标志存入C累加器。设20H、21H、22H分别存放被减数、减数和差。 解:ORG 2000H N1 DATA 20HCLR C ; (Cy) 0MOV A, #9AH ; (A) 两位BCD 的模102SUBB A , N1+1 ; (A) 减数的补数ADD A , N1 ; (A) 被减数+减数的补数DA A ; 进行调整CPL C ; 取借位标志JNC L1 ;借位标志为0则转移MOV N1+2 , A ;存差的补数MOV A , #9AHCLR CSUBB A , N1+2 ;求差的绝对值ADD A,#0DA A SETB C L1: MOV N1+2 , A ;存结果SJMP $ ; 停机END,若被减数减数 ,则差为正,借位标志为0;若被减数减数,则差为负,借位标志为1。,防止求补后再次请零,原为CPL C,关于rel,机器语言中:rel 是-128,+127内的补码 汇编语言中: rel的书写形式1、jc loop ;loop代表目标地址2、jc $-5 ; $-5 也代表目标地址,专题四结束,

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

当前位置:首页 > 网络科技 > 计算机硬件与维护

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报