第3章80868088的指令系统.ppt

第3章80868088的指令系统.ppt

为便于理解指令的形式和功能, 对指令中操作数符号的约定如下: 大小写字母无区别 oprd: 泛指各类操作数; oprd1, oprd2: 多操作数指令中, oprd1为目标操作数,oprd2为源操作数; dest, src: 目的操作数, 源操作数 reg: 8位或16位的通用寄存器; sreg: 段寄存器; acc: 累加器al或ax; reg8: 8位通用寄存器; reg16: 16位通用寄存器; mem: 8位或16位存储器; mem8: 8位存储器; mem16: 16位存储器;  disp: 8位或16位存储器地址偏移量; imm或data: 8位或16位立即数; imm8: 8位立即数; imm16: 16位立即数; port :I/O端口地址,port端口号0~255 ; ( ):寄存器内容; [ ] :存储单元的内容或偏移地址。 ;可分成如下6类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令;3.3.1 数据传送指令;表 4-1 数据传送类指令表;1.通用传送指令 (1) MOV dest,src; dest←src 传送的是字节还是字取决于指令中涉及的寄 存器是8位还是16位。 具体来说可实现: ① MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为寄存器 例: MOV CL,DL MOV AX,BX MOV [SI],CX MOV CL,[BX+5];② MOV reg,data ;立即数送寄存器 ③ MOV mem,data ;立即数送存储单元 ④ MOV acc,mem ;存储单元送累加器 ⑤ MOV mem,acc ;累加器送存储单元 ⑥ MOV segreg,mem/reg ;存储单元/寄存器送 段寄存器 ⑦ MOV mem/reg,segreg ;段寄存器送存储单 元/寄存器;MOV指令使用规则:;几个不能传送的解决办法:用AX作桥梁 存储器←存储器: MOV AX,MEM1 MOV MEM2,AX 段寄存器←段寄存器: MOV AX,DS MOV ES,AX 段寄存器←立即数: MOV AX,DATA MOV DS,AX;应用举例:将1000H开始的100个存储单元 全部填充为ASCII码2AH(*)。 程序段如下: MOV DI,1000H MOV CX,64H MOV AL,2AH AGAIN:MOV [DI],AL INC DI DEC CX JNZ AGAIN HLT;上程序段存放在代码段中,設(CS)=109EH,则??条指令存放地址如下: CS : IP 指令 109E : 0100 MOV DI,1000H 109E : 0103 MOV CX,64H 109E : 0106 MOV AL,2AH 109E : 0108 MOV [DI],AL 109E : 010A INC DI 109E : 010B DEC CX 109E : 010C JNZ 0108 109E : 010E HLT 109E : 0110; ;什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。 为什么要设置堆栈? 为什么要按 “后进先出”方式工作? 参见下图;主程序;规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。 ; ;设(AX)=1020H,执行示意图如图;压栈指令的格式为: PUSH reg PUSH mem/reg PUSH segreg 例如: PUSH AX PUSH [BX] PUSH DS ; ;POP BX 的执行示意图如下图所示;堆栈指令使用时应注意几点: ①堆栈操作总是按字

文档评论(0)

1亿VIP精品文档

相关文档