寻址方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

寻址方式:1.立即寻址:操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分于操作码一起存放在程序储存器中,可以立即得到并执行,不需要经过别的途径去寻找,在数前常冠以#作为前缀。2.寄存器寻址:在指令选定的某寄存器中存放或读取操作数3,寄存器间接寻址:由指令指出某一寄存器的内容,常有@前缀。4,直接寻址:指令中直接给出操作数所在的存储器地址。5,变址寻址:基址寄存器加变址寄存器间接寻址,MOVC A,@A+DPTR.6,相对寻址:以当前程序计数器PC值加上指令中给出的偏移量rel而构成实际操作数地址的寻址方法,它用于访问程序存储器,常出现在相对转移指令中。7,位寻址:在位操作指令中直接给出位操作数的地址可以对片内RAM中128个位和特殊功能寄存器SFR中的93个位进行寻址。

数据传送类指令:一、以累加器为目的操作数的指令

MOV A, Rn ; (Rn)→A,n=0~7

MOV A, @Ri ; ((Ri))→A,i=0,1

MOV A, direct ;(dir ect)→A

MOV A, #data ; #data→A

二、以Rn为目的操作数的指令

MOV Rn, A ; (A)→Rn, n=0~7

MOV Rn, direct ;(direct)→Rn, n=0~7

MOV Rn, #data ; #data→Rn, n=0~7

三、以直接地址direct为目的操作数的指令

MOV direct, A ; (A)→direct

MOV direct, Rn ;(Rn)→direct, n=0~7

MOV direct1, direct2;

MOV direct, @Ri ;((Ri))→direct

MOV direct, #data ; #data→direct

四、以寄存器间接地址为目的操作数的指令

MOV @Ri, A ;(A)→((Ri)),i=0,1

MOV @Ri, direct ;(direct)→((Ri))

MOV @Ri, #data ; #data→((Ri))

五、16位数传送指令

MOV DPTR, #data16 ; #data16→DPTR

唯一的16位数据的传送指令,

立即数的高8位送入DPH,

立即数的低8位送入DPL。

六、堆栈操作指令

内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈,堆栈指针SP始终指向堆栈的

栈顶位置。

1、进栈指令 PUSH direct

先将栈指针SP加1,然后把direct中的内容送到SP指示的内部RAM单元中

2、出栈指令 POP direct

SP指示的栈顶(内部RAM单元)内容送入direct字节单元

中,栈指针SP减1

七、累加器A与外部数据存储器传送指令

MOVX A, @DPTR ;((DPTR))→A,读外部RAM/IO

MOVX A, @Ri ;((Ri))→A,读外部RAM/IO

MOVX@DPTR, A ;(A)→((DPTR)),写外部RAM/IO

MOVX@Ri, A ;(A)→((Ri)),写外部RAM/IO

算术运算类指令:(1)ADD(signed or unsigned ADD):

不带进位的加法指令格式:ADD d, s操作:(d)←(d)+(s)

(2)ADC(add with carry):带进位的加法指令

格式:ADC d, s操作:(d)←(d)+(s)+CF

(3)INC(increment by 1):加1指令

格式:INC d操作:(d)←(d)+1

2.减法指令

(1)SUB(subtract):不带借位的减法指令

格式:SUB d, s 操作:(d)←(d)-(s)

(2)SBB(subtraction with borrow):带借位的减法指令

格式:SBB d, s 操作:(d)←(d)-(s)-CF

(3)DEC(decrement by 1):减1指令

格式:DEC d 操作:(d)←(d)-1

(4)NEG(two’s complement negate):求补指令

格式:NEG d操作:(d)←(d)+1

(5)CMP(compare two operands):比较指令

格式:CMP d, s操作:(d)-(s)

3.乘法指令

(1)MUL(unsigned multiply):无符号数的乘法指令

格式:MUL s操作:s为字节操作数:AX←AL(s)

s为字操作数:DX, AX←AX(s)

(2)IMUL(signed multiply):有符号数的乘法指令

格式:IMUL s操作:s为字节操作数:AX←AL(s)

s为字操作数:DX, AX←AX(s)

4.除法指令

(1)DIV(unsigned divide):无符号数的除法指令

格式:DIV s操作:分为字节和字两种操作类型。

字节操作时,16位被除数在AX中,8位除数为源操作数,结果的8位商在AL中,8位余数在AH中,表示为:AL←AX/(s) 商AH←AX/(s) 余数

字操作时,32位被除数在DX和AX中,其中DX为高位字,16位除数为源操作数,结果的16位商在AX中,16位余数在DX中,表示为:AX←DX, AX/(s) 商DX←DX, AX/(s) 余数DIV指令的被除数、除数、商和余数全部为无符号数。

(2)IDIV(signed divide):有符号数的除法指令格式:IDIV s

操作:与DIV指令相同,只是被除数、除数、商和余数均为有符号数,且余数的符号和被除数的符号相同。

(3)CBW(convert byte to word):字节转换为字指令格式:CBW

操作:AL中的符号位(最高位D7)扩展到AH中。若AL中的D7=0,则AH=00H。若AL中的D7=1,则AH=FFH。

(4)CWD(convert word to doubleword):字转换为双字指令格式:CWD

操作:AX中的符号位(最高位D15)扩展到DX中。若AX中的D15=0,则DX=0000H,若AX中的D15=1,则DX=FFFFH。

相关文档
最新文档