)1MCS51单片机的指令格式中操作码与操作数之间必须用.

)1MCS51单片机的指令格式中操作码与操作数之间必须用.
)1MCS51单片机的指令格式中操作码与操作数之间必须用.

第2章汇编语言----智能电子产品的指令系统

判断题

()1.MCS—51单片机的指令格式中操作码与操作数之间必须用“,”分隔。

()2.MCS—51指令:MOV A,#40H ;表示将立即数40H 传送至A 中。

()3.MCS—51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A 中。()4.MCS—51 指令:MOVX A,@DPTR ;表示将DPTR 指示的地址单元中的内容传送至A 中。

()5.MCS—51 的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。

()6.MCS—51指令中,MOVX 为片外RAM 传送指令。

()7.MCS—51指令中,MOVC 为ROM 传送指令。

()8.将37H 单元的内容传送至A的指令是:MOV A,#37H。

()9.MCS—51指令中,16 位立即数传送指令是:MOV DPTR,#data16。

()10.MCS—51 单片机,CPU 对片外RAM 的访问只能用寄存器间接寻址的方式,且仅有4 条指令。

()11.如JC rel 发生跳转时,目标地址为当前指令地址加上偏移量。

()12.对于8051 单片机,当CPU 对内部程序存储器寻址超过4K 时,系统会自动在外部程序存储器中寻址。

()13.指令MUL AB 执行前(A)=F0H,(B)=05H,执行后(A)=FH5,(B)=00H。()14.已知:DPTR=11FFH 执行INC DPTR 后,结果:DPTR=1200H。

()15.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。()16.已知:A=1FH,(30H)=83H,执行ANL A,30H 后,结果:A=03H (30H)=83H P=0。

()17.无条件转移指令LJMP addr16 称长转移指令,允许转移的目标地址在128KB 空间范围内。

()18.MCS—51 指令系统中,执行指令FGO bit F0 ,表示凡用到F0 位的指令中均可用FGO 来代替。

()19.MCS—51指令系统中,执行指令ORG 2000H;BCD:DB “A,B,C,D”表示将A、B、C、D 的ASII 码值依次存入2000H 开始的连续单元中。

()20.MCS—51指令系统中,指令CJNE A,#data, rel 的作用相当于SUBB A,#data 与JNC rel的作用。

()21.MCS—51 指令系统中,指令JNB bit,rel 是判位转移指令,即表示bit=1 时转。()22.8031 单片机的PC 与DPDR 都在CPU 片内,因此指令MOVC A,@A+PC 与指令MOVC A,@A+DPTR执行时只在单片机内部操作,不涉及片外存储器。

()23.MCS—51 指令系统中,指令AJMP addr11 称绝对转移指令,指令包含有11 位的转移地址;它是把PC 的高 5 位与指令第一字节中的第7~5 位(第4~0 位为00001)和指令的第二字中的8位合并在一起构成16位的转移地址。

()24.MCS—51单片机中PUSH 和POP 指令只能保护现场,不能保护断点。

()25.绝对调用指令ACALL addr11 能在本指令后一字节所在的2K 字节程序存贮区内调用子程序。

()26.指令LCALL addr16 能在64K 字节范围内调用子程序。

()27.设PC 的内容为35H,若要把程序存贮器08FEH 单元的数据传送至累加器A,则必须使用指令MOVC A,@A+PC。

()28.指令MOV A,00H执行后A的内容一定为00H。

()29.在进行二——十进制运算时,必须用到DA A 指令。

()30.指令MUL AB 执行前(A)=43H,(B)=05H,执行后(A)=15H,(B)=02H。()31.MCS—51单片机的布尔处理器是以A为累加器进行位操作的。

单项选择题

1.MCS—51汇编语言指令格式中,唯一不可缺少的部分是()。

A.标号B.操作码C.操作数D.注释

2.MCS—51的立即寻址方式中,立即数前面()。

A.应加前缀“/:”号B.不加前缀号C.应加前缀“@”号D.应加前缀“#”号

3.下列完成8031 单片机内部数据传送的指令是()。

A.MOVX A,@DPTR B.MOVC A, @A+PC C.MOV A,#data D.MOV direct,direct 4.MCS—51的立即寻址的指令中,立即数就是()。

A.放在寄存器R0中的内容B.放在程序中的常数

C.放在A 中的内容D.放在B 中的内容

5.单片机中PUSH 和POP 指令常用来()。

A.保护断点B.保护现场C.保护现场,恢复现场D.保护断点,恢复断点

6.MCS—51寻址方式中,操作数Ri 加前缀“@”号的寻址方式是()。

A.寄存器间接寻址B.寄存器寻址C.基址加变址寻址D.立即寻址7.MCS—51寻址方式中,立即寻址的寻址空间是()。

A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存贮器ROM

D.片内RAM 的20H~2FH 安节中的所有位和部分专用寄存器SFR 的位8.MCS—51寻址方式中,直接寻址的寻址空间是()。

A.工作寄存器R0~R7 B.专用寄存器SFR

C.程序存贮器ROM D.程序存储器256字节范围

9.执行指令MOVX A,@DPTR时,WR、RD脚的电平为()。

A.WR高电平,RD高电平B.WR低电平,RD高电平

C.WR高电平,RD低电平D.WR低电平,RD低电平

10.主程序执行完ACALL 后返回主程序后,堆栈指针SP 的值()。

A.不变B.加2 C.加4 D.减2

11.单片机中使用MOVX A,@R1 指令()寻址数据存贮器1050H 单元。

A.能直接B.不能C.与P2 口配合能D.与P1 口配合能

12.下列指令判断若P1 口最低位为高电平就转LP,否则就执行下一句的是()。

A.JNB P1.0,LP B.JB P1.0,LP C.JC P1.0,LP D.JNZ P1.0,LP 13.指令JB OEOH,LP 中的OEOH 是指()。

A.累加器A B.累加器A 的最高位C.累加器A 的最低位D.一个单元的地址14.下列指令中比较转移指令是指()。

A.DJNZ Rn,rel B.CJNE Rn,#data,rel C.DJNZ direct,rel D.JBC bit,rel 15.指令MOV R0,#20H 执行前(R0)=30H,(20H)=38H,执行后(R0)=()。

A.00H B.20H C.30H D.38H

16.指令MOV R0,20H 执行前(R0)=30H,(20H)=38H,执行后(R0)=()。

A.20H B.30H C.50H D.38H

17.执行如下三条指令后,30H 单元的内容是()。MOV R1,#30H MOV 40H,#0EH MOV @R1,40H

A.40H B.0EH C.30H D.FFH 18.MCS—51指令包括操作码和操作数,其中操作数是指()。

A.参与操作的立即数B.寄存器C.操作数D.操作数或操作数地址

19.MCS—51指令MOV R0,#20H 中的20H 是指()。

A.立即数B.内部RAM20H

C.一个数的初值D.以上三种均有可能,视该指令的在程序中的作用20.MCS—51单片机在执行MOVX A,@DPTR 或MOVC A,@A+DPTR 指令时,其寻址单元的地址是由()。

A.P0 口送高8位,P1 口送高8 位B.P0 口送低8 位,P1 口送高8 位

C.P0 口送低8 位,P1 口送低8 位D.P0 口送高8 位,P1口送低8 21.在MCS—51 指令中,下列指令中()是无条件转移指令。

A.LCALL addr16 B.DJNZ direct,rel C.SJMP rel D.ACALL addr11 22.下列指令中影响堆栈指针的指令是()。

A.LJMP B.ADD C.MOVC A,@A+PC D.LCALL

23.设A=AFH (20H)=81H,指令:ADDC A,20H 执行后的结果是()。

A.A=81H B.A=30H C.A=AFH D.A=20H

24.已知:A=DBH R4=73H CY=1,指令:SUBB A,R4 执行后的结果是()。

A.A=73H B.A=DBH C.A=67H D.以上都不对

25.将内部数据存储单元的内容传送到累加器A中的指令是()。

A.MOVX A,@R0 B.MOV A, #data C.MOV A,@R0 D.MOVX A, @DPTR 26.下列指令执行时,修改PC中内容的指令是()。

A.SJMP B.LJMP C.MOVC A,@ A+PC D.LCALL

27.下列指令执行时,不修改PC 中内容的指令是()。

A.AJMP B.MOVC A,@ A+PC C.MOVC A,@ A+DPTR D.MOVX A,@Ri 28.已知:A=D2H,(40H)=77H,执行指令:ORL A,40H 后,其结果是:()。

A.A=77H B.A=F7H C.A=D2H D.以上都不对

29.指令MUL AB 执行前(A)=18H ,(B)=05H,执行后,A、B的内容是()。

A.90H,05H B.90H,00H C.78H,05H D.78H,00H 30.MCS—51指令系统中,清零指令是()。

A.CPL A B.RLC A C.CLR A D.RRC A

31.MCS—51指令系统中,求反指令是()。

A.CPL A B.RLC A C.CLR A D.RRC A 32.MCS—51指令系统中,指令MOV A,@R0,执行前(A)=86H,(R0)=20H,(20H)

=18H,执行后()。

A.(A)=86H B.(A)=20H C.(A)=18H D.(A)=00H 33.MCS—51指令系统中,指令CLR A ;表示()。

A.将A 的内容清0 B.将A 的内容置1

C.将A 的内容各位取反,结果送回A中D.循环移位指令

34.已知A=87H ,(30H)=76H,执行XRL A,30H 后,其结果为:()。

A.A=F1H (30H)=76H P=0 B.A=87H (30H)=76H P=1

C.A=F1H (30H)=76H P=1 D.A=76H (30H)=87H P=1 35.MCS—51 指令系统中,指令ADD A,R0 执行前(A)=38H,(R0)=54H,(C)=1 执行后,其结果为()。

A.(A)=92H (C)=1 B.(A)=92H (C)=0

C.(A)=8CH (C)=1 D.(A)=8CH (C)=0

36.MCS—51 指令系统中,指令ADD A,R0 执行前(A)=86H,(R0)=7AH,(C)=0 执行后,其结果为()。

A.(A)=00H (C)=1 B.(A)=00H (C)=1

C.(A)=7AH (C)=1 D.(A)=7AH (C)=0

37.MCS—51 指令系统中,指令ADDC A,@R0 执行前(A)=38H,(R0)=30H,(30H)=FOH,(C)=1 执行后,其结果为()。

A.(A)=28H (C)=1 B.(A)=29H(C)=1

C.(A)=68H (C)=0 D.(A)=29H(C)=0

38.下列指令能能使累加器A低4 位不变,高4位置F 的是()。

A.ANL A,#0FH B.ANL A,#0F0H C.0RL A,#0 FH D.0RL A,#0F0H 39.下列指令能能使累加器A高4 位不变,低4位置F 的是()。

A.ANL A,#0FH B.ANL A,#0F0H C.ORL A,#0FH D.ORL A,#0F0H

40.下列指令能使R0低4 位不变,高4位置F的是()。

A.ANL R0,#OF0H B.ORL RO,#0F0H C.ORL 0,#OFH D.ORL 00H,#OF0H 41.下列指令能能使R0 高4 位不变,低4 位置F 的是()。

A.ANL R0,#OFH B.ANL R0,#0F0H C.ORL 0,#0FH D.ORL R0,#0FH 42.下列指令能能使累加器A的最高位置1 的是()。

A.ANL A,#7FH B.ANL A,#80H C.ORL A,#7FH D.ORL A,#80H

43.下列指令能能使R0 的最高位置0 的是()。

A.ANL 0,#7FH B.ANL R0,#FH C.ORL R0,#7FH D.ORL R0,#80H

44.下列指令能能使R0 的最高位取反的是()。

A.CPL R0,7 B.XRL 00H,#80H C.CPL (R0),7 D.ARL R0,#80H 45.下列指令能能使累加器A的最低位置1 的是()。

A.SETB A,#01H B.SETB A,0 C.ORL A,#01H D.SETB A,#00H

46.下列指令能能使P1 口的最低位置1的是()。

A.ANL P1,#80H B.SETB 90H C.ORL P1,#0FFH D.ORL P1,#80H 47.下列指令能能使P1 口的第3 位置1 的是()。

A.ANL P1,#0F7H B.ANL P1,#7FH C.ORL P1,#08H D.SETB 93

第2章单片机指令篇

第二章 MCS_51指令系统 2.1.2 寻址方式 关键:有几个放数的地方? 如何找到数,数送到什么地方去? 数字量0和1与模拟量0伏和5伏的关 系。 1.寄存器寻址方式MOV A ,R0 2.直接寻址方式MOV A ,30H 3.寄存器间接寻址方式MOV A ,@R0 4.立即寻址方式MOV A ,#30H 5.位寻址方式ANL C ,30H 6.变址寻址方式MOVC A,@A+DPTR MOVC A ,@A+PC JMP A ,@A+DPTR 7.相对寻址方式SJMP rel 2.2 数据传送指令 2.2.1 内部RAM数据传送指令组

1.立即数传送指令 MOV A,#data MOV direct, #data MOV Rn, #data MOV @Ri, #data MOV DPTR,#data16 2.内部RAM之间的数据传送指令MOV direct2,direct1 MOV direct, Rn MOV Rn, direct MOV direct, @Ri MOV @Ri, direct 3.累加器的数据传送指令 MOV A,Rn MOV Rn , A MOV A , direct MOV direct , A MOV A , @Ri MOV @Ri , A

2.2.2 外部RAM数据传送指令组 对外部RAM只能使用间接寻址方法,分别使用DPTR和Ri作间址寄存器 1.使用DPTR进行间接寻址 MOVX A ,@DPTR MOVX @DPTR,A 2.使用Ri进行间接寻址 MOVX A ,@Ri MOVX @Ri,A 2.2.3 程序存储器数据传送指令组MOVC A,@A+DPTR MOVC A,@A+PC 寻址范围64KB 2.2.4 数据交换指令组 数据交换指令主要是在内部RAM单元与累加器A这之间进行,有整字节和半字节交换1. 整字节交换指令 XCH A,Rn

8051单片机常用指令

3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指 9.堆栈操作 3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令

共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指 令;数据交换指令以及准栈操作指令。

9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP) POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H

单片机课后习题解答

练习练习练习 第二章单片机结构及原理 1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。 (2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。 (3)4K ROM程序存贮器:存贮程序及常用表格。 (4)128B RAM 数据存贮器:存贮一些中间变量和常数等。 (5)两个16bit定时器/计数器:完全硬件定时器 (6)32根可编程I/O口线:标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入或输出。 (7)一个可编程全双工串行口。 (8)五个中断源。 2、什么是指令?什么是程序? 答:指令是规定计算机执行某种操作的命令。 程序是根据任务要求有序编排指令的集合。 3、如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间? 答:89S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 4、开机复位后,CPU使用的是哪组工作寄存器?他们的地址是多少?CPU如何确定和改变当前工作寄存器组? 答:开机复位后,CPU使用的是第0组工作寄存器,地址为00H~07H,CPU通过改变状态字寄存器PSW中的RS0和RS1来确定工作寄存器组。 5、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU 在操作中要使用两组工作寄存器,SP应该多大? 答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00H~1FH为工作寄存器区,20H~2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。 6、89S51/52的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为8MHz时,一个单片机周期为多少微秒? 答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。 若fosc=8MHz,则一个机器周期=1/8×12μs=1.5μs 7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突? 答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。 8、程序状态字寄存器PSW的作用是什么?常用状态标志有哪些位?作用是什么? 答:程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下: PSW.7(C y):进位标志位。 PSW.6(AC):辅助进位标志位,又称为半进位标志位。 PSW.5(F0):用户标志位。

MCS-51单片机汇编指令操作码助记符

直接寻址方式访问以下三种存储空间: 1.特殊功能寄存器(只能用直接寻址方式访问)。 2.2。内部RAM的低128字节(对于8032/8052等单片机,其内部高128字节RAM (80H~0FFH)不能用直接寻址方式访问,而只能用寄存器间接寻址方式访问)。 3.位地址空间。 寄存器间接寻址方式是由指令指出某一个寄存器的内容作为操作数的地址。(寄存器的内容不是操作数,而是操作数所在的存储器地址。) 寄存器间接寻址使用当前工作寄存器区中R0或R1作地址指针(堆栈操作指令用栈指针SP)来寻址内部RAM(00H~0FFH)。寄存器间接寻址也适用于访问外部扩展的数据存储器,用R0、R1或DPTR作为地址指针。寄存器间接寻址用符号@表示。 相对寻址相对寻址方式以PC的内容作为基地址,加上指令中给定的偏移量,所得结果送PC寄存器作为转移地址。应注意偏移量是有符号数,在-128~+127之间。 寻址方式及相关的存储空间 寻址方式寻址范围 R0~R7 寄存器寻址 A 、B、C(CY)、AB(双字节)、DPTR(双字节)、PC(双字节)直接寻址 内部RAM低128字节 特殊功能寄存器 内部RAM位寻区的128个位 特殊功能寄存器中可寻址的位 寄存器间接寻址 内部数据存储器RAM【@R0,@R1,@SP(仅PUSH,POP)】 内部数据存储器单元的低4位(@R0,@R1) 外部RAM或I/O口(@R0,@R1,@DPTR) 立即寻址程序存储器(常数) 基寄存器加变址 程序存储器(@A+PC,@A+DPTR) 寄存器间接寻址 特殊功能寄存器只能采用直接寻址,而内部RAM高128字节只能采用寄存器间接寻址。 目的操作数不能采用立即寻址,@Ri中的i范围为0和1,@Rn中的n范围为0~7,每条指令中最多只能有1个Rn或者@Ri。下面的都是错的: MOV #30H 40H MOV A @R2

51单片机位操作

C51单片机位操作方法 [日期:2010-10-21 ] [来源:本站原创作者:佚名] [字体:大中小] (投递新闻) C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。 1、位运算符 C51提供了几种位操作符,如下表所示: 运算符含义运算符含义 &按位与~取反 |按位或<<左移 ^按位异或>>右移 1)“按位与”运算符(&) 参加运算的两个数据,按二进位进行“与”运算。原则是全1为1,有0为0,即:0&0=0; 0&1=0; 1&0=0; 1&1=1; 如下例: a=5&3; //a=(0b 0101) & (0b 0011) =0b 0001 =1 那么如果参加运算的两个数为负数,又该如何算呢?会以其补码形式表示的 二进制数来进行与运算。 a=-5&-3; //a=(0b 1011) & (0b1101) =0b 1001 =-7 在实际的应用中与操作经常被用于实现特定的功能: 1.清零 “按位与”通常被用来使变量中的某一位清零。如下例: a=0xfe; //a=0b 11111110 a=a&0x55; //使变量a的第1位、第3位、第5位、第7位清零a= 0b 01010100 2.检测位 要知道一个变量中某一位是‘1’还是‘0’,可以使用与操作来实现。 a=0xf5; //a=0b 11110101 result=a&0x08; //检测a的第三位,result=0 3.保留变量的某一位 要屏蔽某一个变量的其它位,而保留某些位,也可以使用与操作来实现。 a=0x55; //a=0b 01010101 a=a&0x0f; //将高四位清零,而保留低四位a=0x05

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

51单片机基础知识 (问答题)

1、单片机的机器周期、状态周期、振荡周期和指令周期之间是什么关系? 答:一个机器周期恒等于6个状态周期或12个振荡周期,即1M=6S=12P。 2、存储器中有几个保留特殊功能的单元用做入口地址?作用是什么? 答:MCS-51系列单片机的存储器中有6个保留特殊功能单元; 作用:0000H为复位入口、0003H为外部中断0入口、000BH为T0溢出中断入口、0013H为外部中断1入口、001BH为T1溢出中断入口、0023H为串行接口中断入口。 3、开机复位后,CPU使用是的哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工 作寄存器组? 答:开机复位后,CPU使用的是第0组工作寄存器。 它们的地址是00H~07H。CPU通过对程序状态字PSW中RS1、RS0的设置来确定和改变当前工作寄存器组。如:RS1、RS0为00则指向第0组;为01则指向第1组;为10则指向第2组;为11则指向第3组。 4、MCS-51的时钟周期、机器周期、指令周期的如何分配的?当振荡频率为8MHz时,一个单片 机时钟周期为多少微秒? 答:MCS-51的时钟周期是最小的定时单位,也称为振荡周期或节拍。一个机器周期包含12个时钟周期或节拍。不同的指令其指令周期一般是不同的,可包含有1~4个机器周期。 当振荡频率为8MHz时,一个单片机时钟周期为0.125μs 。 5、EA/V 引脚有何功用?8031的引脚应如何处理?为什么? PP 答:EA/V PP是双功能引脚: (1)EA接高电平时,在低4KB程序地址空间(0000H~0FFFH),CPU执行片内程序存储器的指令,当程序地址超出低4KB空间(1000H~FFFFH)时,CPU将自动执行片外程序存储器的指令。 (2)EA接低电平时,CPU只能执行外部程序存储器的指令。 8031单片机内部无ROM,必须外接程序存储器。因此,8031的EA引脚必须接低电平。 在对8751单片机内部的EPROM编程时,此引脚V PP外接+12V电压,用于固化EPROM程序。 6、单片机对中断优先级的处理原则是什么? 答:⑴低级不能打断高级,高级能够打断低级; ⑵一个中断以被响应,同级的被禁止; ⑶同级,按查询顺序,INT0→T0→INT1→T1→串行接口。 7、MCS-51的外部中断的触发方式有哪两种?他们对触发脉冲或电平有什么要求? 答:有电平触发和脉冲触发。

位及位操作指令

位及位操作指令 通过前面那些流水灯的例子,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、移位等等。用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,可以直接用数值来表在。可是如果用它来控制一些开关的打开和合上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例子吗? 我们知道送往P1口的数值后并不能马上知道哪个灯亮和来灭,而是要化成二进 制才知道。工业中有很多场合需要处理这类开关输出,继电器吸合,用字节来处 理就显示有些麻烦,所以在8031单片机中特意引入一个位处理机制。 1.位寻址区 在8031中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,可以直接用这个地址来对此进行操作。

图1 内部RAM的20H-2FH这16个字节,就是8031的位寻址区。看图1。可见这里面的每一个RAM中的每个位我们都可能直接用位地址来找到它们,而不必用字节地址,然后再用逻辑指令的方式。 2.可以位寻址的特殊功能寄存器 8031中有一些SFR是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON (定时器/计数器控制寄存器)、P0-P3(I/O端口锁存器)。以上的一些SFR我们还不熟,等我们讲解相关内容时再作详细解释。 3.位操作指令 MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集。在进行位处理时,CY(就是我们前面讲的进位位)称“位累加器”。有自已的位RAM,也就是我们刚讲的内部RAM 的20H-2FH这16个字节单元即128个位单元,还有自已的位I/O空间(即P0.0…..P0.7,P1.0…….P1.7,P2.0……..P2.7,P3.0……..P3.7)。当然在物理

计算机体系结构实验-对指令操作码进行霍夫曼编码

CENTRAL SOUTH UNIVERSITY 计算机体系结构实验报告题目对指令操作码进行霍夫曼编码

一、实验目的 了解和掌握指令编码的基本要求和基本原理。 二、实验环境 Eclipse IDE for Java Developers(Version: Kepler Release) Win7 三、实验内容 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 问题描述以及问题分析: 我们举例说明此问题,例如:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行HUFFMAN编码,只要根据指令的各类操作码的出现概率构造HUFFMAN树再进行HUFFAM编码。此过程的难点构造HUFFMAN树,进行HUFFAM编 码只要对你所生成的HUFFMAN树进行中序遍历即可完成编码工作。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

51单片机指令

3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。 Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指

令;数据交换指令以及准栈操作指令。 9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP)

POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例 把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H 数据传送与交换类指令是各类指令中数量最多、使用最频繁的一类指令,编程时应能十分熟练地灵活运用

最新51单片机的基本端口操作

51单片机的基本端口 操作

第一章51单片机的基本端口操作 主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。 “点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机 C51编程方法和例程。 “更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。 “定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。 “小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。 先复习下Keil 51的操作。 1.1点亮最简单的单片机系统 常用MCS-51系列单片机引脚功能说明

提问:什么是单片机系统、 提问:单片机中晶振有什么作用? 回答:单片机访问一次存储器的时间,称之为一个及其周期, 是一个时间基准。一个机器周期包括12 个时钟周期。如果一个单片机选择了12MHz 晶振,它的时钟周期是 1/12us ,它的一个机器周期是 12X (1/12us ),也就是 1us 。 若是12MHz 的晶振,当单片机中定时 /计数器的数值加 1时,实际经过的时间就是 1us 。 提示:晶振电路,复位电路

基本电路图: 发光二极管导通压降通常为1.7V-1.9V; 为什么要接电阻? 电路原理及器件选择? 89C51:单片机,控制发光二极管亮灭 OSC:晶振,在本例中选择12MHz的立式晶振C3,C2:晶振电路的起振电容,容值为22pF

L1:发光二极管 R1:限流电阻,阻值为1k欧 地址分配和连接? P1.0:与发光二极管电路相连,控制LED发光二极管阴极的电平高低 RESET:复位引脚 X1,X2:单片机的晶振引脚 程序设计: 延时程序:我们先不使用单片机的定时器,而是直接采用软件的延时程序定时控制发光二极管的亮灭。在12M晶振时,一个指令周期为1us,那么1M次就是1s。 程序代码: #include sbit gate=P1^0; //位定义 void main(void) { unsigned int i,j; while(1) { for(i=1000;i>0;i--) //双重循环,延时约1s

51单片机汇编指令集

1)数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; (3)逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; (4)控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移;

单片机指令英文全称

51单片机汇编指令集(指令集带英文翻译) 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX(Move External RAM)对外部RAM的数据传送; XCH(Exchange)字节交换; XCHD(Exchange low-order Digit)低半字节交换; PUSH(Push onto Stack)入栈; POP (Pop from Stack)出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC(Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap)低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移; JC (Jump if the Carry flag is set)有进位则转移;

操作码指令扩展

题一某计算机指令字长为16位,指令有双操作数、单操作数和无操作数3种格式,每个操作数字段均用6位二进制表示,该指令系统共有m条(m<16)双操作数指令,并存在无操作数指令。若采用扩展操作码技术,那么最多还可设计出()条单操作数指令。 A.2^6 B.(2^4-m)*(2^6)-1 C.(2^4-m)*2^6 D.(2^4-m)*(2^6-1) 答案选B 分析: 对于双操作数指令而言,两个长度为6位的操作数共占了12位,剩余的4位用作操作码,所以可以设计出2的四次方个双操作数指令。系统中已经设计出了m条双操作数指令,那么剩余的2^4-m条可以用于设计单操作数的操作码。对于单操作数指令而言,它的操作码长度为16-6=10位。题目中要求使用扩展操作码技术,所以单操作数指令在原来的双操作数指令的4位操作码上可以扩展10-4=6位,所以最多可以设计出(2^4-m)*(2^6)-1条单操作数的指令。减去1的原因是“存在无操作数指令”,所以至少留下一个用来扩展无操作数指令。 题二指令字长为16位,采用扩展操作码技术,形成15条三地址指令、12条二地址指令、31条一地址指令和16条零地址指令。 三地址:(15条) 0000 **** **** **** ... ... ... ... 1110 **** **** **** 二地址:(12条) 1111 0000 **** **** ... ... ... ... 1111 1011 **** **** 一地址:(31条) 1111 1100 0000 **** ... ... ... ... 1111 1101 1110 **** 零地址:(16条) 1111 1101 1111 0000 ... ... ... ... 1111 1101 1111 1111 若某机要求:三地址指令4条,单地址指令255条,零地址指令16条。设指令字长为12位.每个 地址码长为3位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?说明其理由。 答:①不能用扩展码为其编码。 ∵指令字长12位,每个地址码占3位;

)1MCS51单片机的指令格式中操作码与操作数之间必须用...

第2章汇编语言----智能电子产品的指令系统 判断题 ()1.MCS—51单片机的指令格式中操作码与操作数之间必须用“,”分隔。 ()2.MCS—51指令:MOV A,#40H ;表示将立即数40H 传送至A 中。 ()3.MCS—51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A 中。()4.MCS—51 指令:MOVX A,@DPTR ;表示将DPTR 指示的地址单元中的内容传送至A 中。 ()5.MCS—51 的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。 ()6.MCS—51指令中,MOVX 为片外RAM 传送指令。 ()7.MCS—51指令中,MOVC 为ROM 传送指令。 ()8.将37H 单元的内容传送至A的指令是:MOV A,#37H。 ()9.MCS—51指令中,16 位立即数传送指令是:MOV DPTR,#data16。 ()10.MCS—51 单片机,CPU 对片外RAM 的访问只能用寄存器间接寻址的方式,且仅有4 条指令。 ()11.如JC rel 发生跳转时,目标地址为当前指令地址加上偏移量。 ()12.对于8051 单片机,当CPU 对内部程序存储器寻址超过4K 时,系统会自动在外部程序存储器中寻址。 ()13.指令MUL AB 执行前(A)=F0H,(B)=05H,执行后(A)=FH5,(B)=00H。()14.已知:DPTR=11FFH 执行INC DPTR 后,结果:DPTR=1200H。 ()15.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。()16.已知:A=1FH,(30H)=83H,执行ANL A,30H 后,结果:A=03H (30H)=83H P=0。 ()17.无条件转移指令LJMP addr16 称长转移指令,允许转移的目标地址在128KB 空间范围内。 ()18.MCS—51 指令系统中,执行指令FGO bit F0 ,表示凡用到F0 位的指令中均可用FGO 来代替。 ()19.MCS—51指令系统中,执行指令ORG 2000H;BCD:DB “A,B,C,D”表示将A、B、C、D 的ASII 码值依次存入2000H 开始的连续单元中。

第四次作业 指令系统 设计算机A有60条指令,指令操作码6位固定长度

第四次作业: 指令系统 1,设计算机A有60条指令,指令操作码6位固定长度编码,从000000到111011。其后继产品B需要增加32条指令,并与A保持兼容, (1)试为计算机B设计指令操作码。 (2)计算操作码平均长度 2,某计算机的指令系统字长定长为16位,采用扩展操作码,操作数地址需要4位,该指令系统已有三地址指令M条,而地址指令N条,没有零地址指令,问系统最多还有多少条一地址指令? 3,在一个单地址指令的计算机系统中有一个累加器,给定以下存储器数值: ●单位20中的内容是40; ●单位30中的内容是50; ●单位40中的内容是60; ●单位50中的内容是70; 求以下指令分别将什么数值装入到累加器中? (1)load #20 (2)load 20 (3)load(20) (4)load #30 (5)load 30 (6)load (30) 4,一条双字长的指令存储在地址为W的存储器中。指令的地址字段位于地址为W+1处,用Y表示。在指令执行中使用的操作数存储在地址为Z的位置。在一个变址存储器中包含X的值。试叙述Z是怎样根据其他地址计算得到的,假定寻址方式为: (1)直接寻址 (2)间接寻址 (3)相对寻址 (4)变址寻址 5,一条双字长的load指令存储在地址为200和201的存储位置,该指令将地址码指定的存储器内容装入累加器AC。指令的第一个字指定操作码和寻址方式,第二个字是地址部分。PC寄存器的值是200。通用寄存器R1的值是400,变址寄存器R1的值是400,变址寄存器XR的内容是100,如图所示。 指令的寻址方式字段可指定任何一种寻址方式。问在以下寻址方式下,装入AC的值。 (1)直接寻址 (2)立即数寻址 (3)相对寻址 (4)变址寻址 (5)寄存器(R1)寻址 (6)寄存器(R1)间接寻址

80C51单片机的复位标志位的实现

80C51单片机的复位标志位的实现 设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。 MC68HC08系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗复位、非法指令复位、非法地址复位和欠压复位。SPMC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地址复位和欠压复位。51兼容的P89LPC900系列有一个复位源寄存器,负责记录6种复位标志位:欠压复位、上电复位、外部复位、看门狗复位、软件复位和UART收到间隔字符复位(主要作为进入ISP监控程序的途径之一)。就连初学者很常用的 AT89S51/52和P89C52X2,也在其电源控制寄存器PCON中增设了一个上电标志位POF。 1 复位标志位的设置方法 传统的80C51单片机没有设计复位标志位的记录功能,这应该说是一种遗憾,那么能否通过一定的技术手段来弥补这个缺憾呢?这里给广大80C51单片机用户提供一种启示和引导。 实现复位标志位的记录肯定需要一定的硬件电路支持,而这种电路的设计不存在固定模式。

应用了一个4输入端“与非”门G1和一个按钮开关SW1,还占用了80C51的5条I/O引脚P1.0~P1.4以及一个外部中断源 INT0,并且预先通过初始化软件设置INT0为唯一的高级中断源,下降沿触发方式有效,开放总中断使能位EA。平时G1因各输入端都维持在高电平上,因而其输出端也保持高电平。电路中利用了一个海量电容器C1作为储存能量的器件,扮演着备用电池的角色。由于二极管D1的存在,在主电源断电期间,C1仅为单片机供电,应该让这时的80C51进入耗能最低的停机状态(PD模式)。 在图1电路的基础上配合必要的用户软件,就可以在7种不同复位源引起复位之后保存6个标志位来记录7种复位标志,以下分别进行讲解。可以事先在RAM的位寻址区间分配一个字节,例如20H 单元,用于记录6个复位标志位。 假设该寄存器定名为SRFR(System Reset Flag Register),字节地址为20H,8位当中仅利用了6位,bit5~bit0分别记录人工复位、欠压复位、看门狗复位、非法地址复位、软硬件复位和软件复位。 ① MRST:人工复位。当复位按钮SW1被按下时引发INT0中断;在中断服务程序中检测输入引脚P1.4的状态。如果P1.4=0,则置位MRST,记录下曾经发生了一次人工复位操作。然后进行一次主动的复位操作,方法是从输出脚P1.0输出一个低电平给MAX813L的输入引脚MR,经 MAX813L延时后从输出端RESET送出高电平复位信号给80C51,令其进行一次硬件复位操作。

汇编指令与机器码的相互转换

汇编指令与机器码的相互转换 机器语言我们只要重点理解一下几个概念: 1. 机器语言指令有操作码(OP)和地址码两部分组成 |_____________OP_______________|__d__|__w__| |_____________OP_______________|__s__|__w__| <--此格式用于立即寻址方式 在多数操作码中,常使用某些位来指示某些信息: 如图上结构里的:w=1 时对字来操作 w=0 时对字节来操作 d值在双操作数指令中才有效 当d=1 时有且只有一个寄存器用于目的操作数 d=0 时有且只有一个寄存器用于源操作数 s=1 时立即数为8位,但要求扩展成16位数 s=0 时当指令作字节操作/有16位立即数 由于汇编的指令格式很多,这里我只作一些基本情况介绍,必要时读者可以下载/查阅80x86汇编小站https://www.360docs.net/doc/979471974.html,提供的OPCODES手册来查阅。 2. 寻址方式的机器语言表示: | mod | reg | r/m | |_____|_____|_____|_____|_____|_____|_____| reg 表示寄存器方式,在不包括立即数的双操作数指令的情况下,规定必须有一个操作数在寄存器中,该寄存器由reg字段指定,并与操作码字节中的w位相组合确定的寄存器 mod字段与r/m(register/memory)字段结合在一起确定另一个操作数的寻址方式现在你们下载了80x86汇编小站(https://www.360docs.net/doc/979471974.html,)提供的OPCODES 手册了吗? 下载好了,请解压后打开里面的:opcodes.html 文件,然后熟悉里面的表格: 现在熟悉简单的: ____________________________________________________________________________ __ 表1 rrr : W=0 : W=1 : reg32 000 : AL : AX : EAX

常用操作码

常用命令 MOV指令为双操作数指令,两个操作数中不能全为内存操作数 执行操作: dst = src 1.目的数可以是通用寄存器,存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令:堆栈操作是以“后进先出”的方式进行数据操作。 PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器。 入栈时高位字节先入栈,低位字节后入栈。 POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外,可以为通用寄存器,段寄存器和存储器。 执行POP SS指令后,堆栈区在存储区的位置要改变。 执行POP SP 指令后,栈顶的位置要改变。 XCHG(eXCHanG)交换指令:将两操作数值交换。 XCHG OPR1,OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据。 XLAT(TRANSLATE)换码指令:把一种代码转换为另一种代码。 XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码。 LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG,SRC //指令把源操作数SRC的有效地址送到指定的寄存器中。 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX,OFFSET OPER_ONE 等价于 LEA BX,OPER_ONE MOV SP,[BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP,[BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG,SRC //常指定SI寄存器。 执行操作: REG=(SRC),DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。 LES(Load ES with pointer) 指针送寄存器和ES指令

相关文档
最新文档