xkkk 发表于 2012-6-29 21:21:50

请教大家汇编语言第七章的问题

assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. dispalay.....'
db '2. brows........'
db '3. replace......'
db '4. modify.......'
datasg ends
codesg segment
start: mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: push cx
   mov si,0
   mov cx,4
   s: mov al,
    and al,11011111b
    mov ,al
    inc si
    loop s
   add bx,16
   pop cx
   loop s0
mov ax,4c00h
int 21h
codesg ends
ends start

问题是:
1.为什么mov sp,16,sp为什么是16?
2.如果是16的话,那么db的数据是stacksg:0000 1 .   d i s p a l a y . . . . .
                                                   stacksg:0010 2 .   b r o w s . . . . . . . .
                                                   stacksg:0020 3 .   r e p l a c e .. . . . .
                                                   stacksg:0030 4 .   m o d i f y . . .. . . .
我这样理解是否有错?
3.我一开始理解得是SP=0
                               BX=16

Yara 发表于 2012-6-29 21:21:51

stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
这里,你先把SS与stacksg段挂钩了,而你stacksg段定义了16字节,所以你栈顶你要指向16d(十进制的16)

Yara 发表于 2012-6-29 23:26:40

第2个问你理解得没错,第3个问我只能说sp是与栈段ss相关的,而bx是通用寄存器,可以用作寻址和存储用

看客 发表于 2012-6-30 00:25:32

学习,学习,

会游泳的猫 发表于 2012-6-30 01:17:24

栈空间的最小值是不是16个字节啊?

变得不一样 发表于 2012-6-30 01:29:16

会游泳的猫 发表于 2012-6-30 01:17 static/image/common/back.gif
栈空间的最小值是不是16个字节啊?

16个位吧 SP都是加2减2的

变得不一样 发表于 2012-6-30 02:01:27

Yara 发表于 2012-6-29 21:21 static/image/common/back.gif
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends


16个字节 是10H吧

梦想与现实 发表于 2012-6-30 07:09:32

我怎么感觉不太对呢

stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends

dw = dword = 4byte
dw 0,0,0,0,0,0,0,0这条伪指令不是应该申请了 32个字节的空间吗
十进制32 = 十六进制20h
我感觉这道题本身就有问题

梦想与现实 发表于 2012-6-30 07:17:15

哦 不对 是我理解多了
dw 不是 dword 的意思
Sorry!

继续维持原判

Yara 发表于 2012-6-30 10:44:33

会游泳的猫 发表于 2012-6-30 01:17 static/image/common/back.gif
栈空间的最小值是不是16个字节啊?

{:5_105:}这里栈空间的大小是你自己定义的stacksg段,没有说特定是10H

会游泳的猫 发表于 2012-6-30 13:13:29

定义的栈空间是用来存放cx的
页: [1]
查看完整版本: 请教大家汇编语言第七章的问题