|  | 
 
 发表于 2025-4-21 00:47:36
|
显示全部楼层
   本楼为最佳答案 
| 本帖最后由 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
 | 
 |