|
本帖最后由 jackz007 于 2025-4-21 13:29 编辑
把数据段设置为 1000h,把堆栈段设置为 2000h并把栈顶指针设置为 010h,利用堆栈操作在压栈的时候,栈顶指针会由栈顶向栈底移动的特性,当把 ds:[0] 入栈时,会转存2个字节(1个word)到栈顶 ss:[e],当将 ds:[2] 入栈时,会转存2个字节(1个word)到栈顶 ss:[c],...... 依此类推,当把 ds:[e] 入栈时,会转存2个字节(1个word)到栈顶 ss:[0],从而达到了将 10000H-10010H 处的 8 个 word 依逆序保存到 20000H-20010H 的目的。
- assume cs : code
- code segment
- start: mov ax,1000h
- mov ds,ax
- mov ax,2000h ; 填空第 1 行内容
- mov ss,ax ; 填空第 2 行内容
- mov sp,10h ; 填空第 3 行内容
- push word ptr [0] ; ds:[0] --> ss:[e]
- push word ptr [2] ; ds:[2] --> ss:[c]
- push word ptr [4] ; ds:[4] --> ss:[a]
- push word ptr [6] ; ds:[6] --> ss:[8]
- push word ptr [8] ; ds:[8] --> ss:[6]
- push word ptr [0ah] ; ds:[a] --> ss:[4]
- push word ptr [0ch] ; ds:[c] --> ss:[2]
- push word ptr [0eh] ; ds:[e] --> ss:[0]
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 |
|