科学发展观 发表于 2012-1-12 16:50:40

汇编语言第二版 检测点6.1第2题中的问题

源代码
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,cs   ;cs为所填第一空
    mov ss,ax
    mov sp,24h    ;此条指令为所填第二空
    mov ax,0
    mov ds,ax
    mov bx,0
    mov cx,8
s:
    push
    pop cs:    ;此条指令为所填第三空
    add bx,2
    loop s
   
    mov ax,4c00h
    int 21h
codesg ends
end start
第3个空中的pop cs:中把CS改成DS可以不
还有就是cs:中的数据是什么 是内存单元中的还是代码中的 如果是源代码中的数据那他也没有入栈呀?怎么到这就变成POP出栈了?原来入栈的不是内存单元中的数据吗?

科学发展观 发表于 2012-1-12 17:11:02

有没有大牛指点下

科学发展观 发表于 2012-1-12 17:58:24

补充下 把 pop cs: 中的CS换成SS一样可以改写数据
这么回事 是不是 因为CS 和SS在一个段地址的原因
把 pop cs: 中的CS换成DS就不行了
求助

小马过河 发表于 2012-1-12 19:39:07

push    此处压栈的是内存0000H处偏移为BX的地址的内容
pop cs:    此处出栈此内容送到代码段偏移为BX的地址中去


作者和你并不知道内存0000:~0000:15处是什么内容,他只是让你将数据拷贝到代码段哪里就行了,至于为什么,他没说,

科学发展观 发表于 2012-1-12 19:54:43

有点明白先谢谢您

惆怅客 发表于 2012-9-9 17:29:56

貌似明白了哦!

s0512 发表于 2012-9-9 17:41:23

{:1_1:}还没学到,努力跟上~
页: [1]
查看完整版本: 汇编语言第二版 检测点6.1第2题中的问题