微机数据传送和加减乘除.pptVIP

  • 0
  • 0
  • 约5.54千字
  • 约 38页
  • 2023-06-25 发布于广东
  • 举报
微机数据传送和加减乘除 第一页,共三十八页,2022年,8月28日 3.3.1 数据传送指令 细分,如下四种: 通用传送(*) 目标地址传送 标志传送 输入输出(*) 寄存器 存储器 I/O 第二页,共三十八页,2022年,8月28日 (1) MOV dest,src; dest←src 可实现: 1.通用传送指令 寄存器之间传送(除CS 和 IP) 例: MOV CL,DL MOV DS,AX MOV AX,BX MOV AX,ES 寄存器(除CS、IP)与存储器之间传送 例: MOV AX ,[SI] MOV [1000H],AL MOV DS,DATA[SI+BX] MOV DEST[BP+DI] ,ES 第三页,共三十八页,2022年,8月28日 MOV指令使用规则: 1、源操作数与目的操作数类型要一致。 2、不能在两个存储单元之间传送。(某些单片机内部RAM可以) MOV [1000H] ,[2000H] 3、立即数不能送段寄存器。 MOV DS ,300H 3、段寄存器之间不能传送。 MOV DS ,ES 5、CS、IP不能做目的操作数。 MOV CS ,AX 6、立即数不允许作为目的操作数  原则:逻辑上合理,有必要,使用频率高,效率高   立即数送通用REG或存储器 例:MOV CL ,4 MOV AX ,03FFH MOV BYTE PTR [BX] ,5 MOV WORD PTR [100H] ,5678H 第四页,共三十八页,2022年,8月28日 几个不能直接传送的解决办法: 用AX作桥梁 存储器←存储器: MOV AX,MEM1 MOV MEM2,AX 段寄存器←段寄存器: MOV AX,DS MOV ES,AX 段寄存器←立即数: MOV AX,DATA MOV DS,AX 第五页,共三十八页,2022年,8月28日 MOV DS, 100 ; MOV [1000H], 23H MOV IP, 2000H ; MOV AX, [0100H+BX+BP] 练习: 1.指出下列指令的错误: MOV [BX], [DI] ; MOV AH, CX; MOV AX, [SI][DI]; MOV CS,0 ; 第六页,共三十八页,2022年,8月28日 200 MEM1 MEM2 …... …... MOV SI ,OFFSET MEM1 MOV DI ,OFFEST MEM2 MOV CX,200 NEXT: MOV AL ,[SI] MOV [DI] ,AL INC SI INC DI DEC CX JNZ NEXT HLT MEM1, MEM2是符号地址(变量)先定义后使用。在这是字节传送, 定义为字节变量 应用举例:把内存中首地址为MEM1的200个字节送到首地址为MEM2的区域中。 第七页,共三十八页,2022年,8月28日 规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。 (2) 堆栈操作指令 什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。堆栈 以字为单位进行压入弹出操作。 栈底 低地址 高地址 SP SS 堆栈段 进栈方向 退栈方向 栈顶 第八页,共三十八页,2022年,8月28日 ① 压栈指令 格式: PUSH src ; 源操作数可为REG、M,目的隐含SP 例:PUSH AX,设(AX)=1020H(SS)=1050H,(SP)=0004H 操作: [(SP)-1]←高字节AH, [(SP)-2]←低字

文档评论(0)

1亿VIP精品文档

相关文档