一、知识点(博主自认为关键的几点)
1.把值存入段寄存器ds:需通过先给数据寄存器值(ax, bx, cx, dx),再送入ds中
如:
mov ax,2000 mov ds,ax
2.字数据的存取原则:
字数据的低位字节存放在低地址内存单元;高位则放于高位地址;(小端法)
如:124EH在内存中的存放位置如下:
(且地址为[1])
3.关于mov指令值得注意的一点,当作为第二个操作数的常数最高位为a-f时,前面要加0
4.SS:SP,与ds相同,ss也不能直接送值
二、小测试
栈的使用主要需要注意使用pop和push指令时的越界问题,其他自觉没啥大问题,
此处测试一下利用栈来“保护现场”:
首先,分配栈空间:
将bx,cx的值分别设为1234H和5678H
利用push和pop“保护现场”:
可见,执行完之后,bx,cx的值未发生改变
三、课后检测点3.2
<1>补全下面的程序,使其可以将10000H-10000FH中的8个字,逆序复制到20000H-2000FH中。
mov ax,1000H mov ds,ax ________ ________ ________ push [0] push [2] push [4] push [6] push [8] push [A] push [C] push [E]
思索一番,得出缺失的三行代码为:
mov bx,2000H mov ss,ax mov sp,0010H
<2>题目不变,将代码改为:
mov ax,2000H mov ds,ax ________ ________ ________ pop [E] pop [C] pop [A] pop [8] pop [6] pop [4] pop [2] pop [0]
如下:
mov ax,1000H mov ss,ax mov sp,0000H
此题只是考察如分配一个满栈和空栈,较为基础,故不作解释
原文地址:https://www.cnblogs.com/dreamlocker/p/9818130.html
时间: 2024-10-08 16:36:32