遥望那片雨 发表于 2020-3-17 20:05:57

关于汇编检测点6.1(2)

(2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:

assume cs:codesg
codesg segment

      dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
      dw 0,0,0,0,0,0,0,0,0,0

start:mov ax, codesg ;或mov ax, cs
      mov ss,ax
      mov sp, 24h    ;或mov sp, 36   ;(第一版填1ah或26)
      mov ax,0
      mov ds,ax
      mov bx,0
      mov cx,8

    s:push
         pop cs:   ;或 pop ss:
      add bx,2
      loop s

      mov ax,4c00h
      int 21h

codesg ends

end start


这个栈空间为什么一定要24h,下面循环只用22h,23h内存单元作为栈出入数据(sp在22h,24h中反复指向,那不就是dw定义的10个字我就用到了最后一个字单元22h,23h作为数据交换)
我用12h为什么就不行?12h不就是用了10h和11h两个内存单元出入数据,没覆盖掉0~f单元的啊。

遥望那片雨 发表于 2020-3-17 20:17:57

哪位求解下哈?照理来说14h,16h因该都可以,不要超过24h和不要小于12h吧?

人造人 发表于 2020-3-17 20:42:19

中断机制要用到栈,这是你后面的课程
现在只要知道有中断机制这个东西就行了,这个问题不应该在现在纠结
中断机制是课程后半部分的重点

遥望那片雨 发表于 2020-3-17 20:47:52

人造人 发表于 2020-3-17 20:42
中断机制要用到栈,这是你后面的课程
现在只要知道有中断机制这个东西就行了,这个问题不应该在现在纠结
...

明白了,看了半天都没搞出来。我先学后面的。
页: [1]
查看完整版本: 关于汇编检测点6.1(2)