几个不能传送的解决办法:用AX作桥梁 ●存储器←存储器: Mov AX, MEM1 Mov MEM2, AX ●段寄存器←段寄存器: MOV AX, DS MOV ES, AX ●段寄存器←立即数 Mov AX, DATA MOV DS, AX
6 几个不能传送的解决办法:用AX作桥梁 ⚫ 存储器←存储器: MOV AX,MEM1 MOV MEM2,AX ⚫ 段寄存器←段寄存器: MOV AX,DS MOV ES,AX ⚫ 段寄存器←立即数: MOV AX,DATA MOV DS,AX
●应用举例:将100OH开始的100个存储单元 全部填充为 ASCII码2AH(*) 程序段如下: MOV dI, 1000H MOV CX, 64H MOV AL, 2AH AGAIN: MOV DI, AL INC DI DEC CX JNZ AGAIN HLT
7 ⚫应用举例:将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)=109HH, 则各条指令存放地址如下: 指令 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:010CJNZ0108 109E:010E HLT 109E:0110
8 上程序段存放在代码段中,設(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
写入2AH(*)后,数据段中相应存储单元的内容改 变如下: DS: 1000 2A2A2A 2A2A 2A2A 2A2A2A 2A2A 2A2A 2A 2A DS: 1010 2A2A 2A 2A2A2A2A2A 2A 2A2A2A2A2A2A 2A DS: 1020 2A 2A2A2A 2A 2A2A 2A 2A2A2A 2A 2A2A2A 2A DS: 1030 2A2A 2A 2A2A 2A 2A2A 2A 2A2A 2A 2A2A2A 2A DS: 1040 2A2A2A 2A2A 2A2A2A 2A2A 2A2A2A 2A2A 2A DS: 1050 2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2A 2A DS:10602A2A2A2A
9 写入2AH(*)后,数据段中相应存储单元的内容改 变如下: DS:1000 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1010 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1020 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1030 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1040 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1050 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A DS:1060 2A 2A 2A 2A
(2)堆栈操作指令 什么是堆栈? 按“后进先出①LIFO)”方式工作的存储区 域。堆栈以字为单位进行压入弹出操作 为什么要设置堆栈? 为什么要按“后进先出”方式工作? 参见下图
10 什么是堆栈? 按“后进先出(LIFO)”方式工作的存储区 域。堆栈以字为单位进行压入弹出操作。 为什么要设置堆栈? 为什么要按 “后进先出”方式工作? 参见下图 (2) 堆栈操作指令