第六章的一个疑问 麻烦小甲鱼进来下
本帖最后由 weixianlang 于 2011-8-11 08:20 编辑第六章的一个疑问 麻烦小甲鱼进来解答下 谢谢
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0
start: mov ax, cs
mov ss, ax
mov sp, 32
mov bx, 0
mov cx, 8
s:push cs:
add bx, 2
loop s
mov bx, 0
mov cx, 8
s0:pop cs:
add bx, 2
loop s0
mov ax, 4c00h
int 21h
codesg ends
end start
课本为什么是 mov sp, 30而小甲鱼的是 mov sp, 32 我来探讨下 dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
这里是 16个字型数据
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h 这里是 8个字型数据进栈 出栈 都是 8个字型数据
16个字型数据+进栈8个字型数据+出栈8个字型数据=32 那么push执行的步骤一. sp-2 二 . ss:sp
那么来看下 检测点6.1 第2题小甲鱼 答安
(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
按照上面的分析dw 0,0,0,0,0,0,0,0,0,0这里是 10个字型数据
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h 这里是 8个字型数据进栈 出栈 都是 8个字型数据
10个字型数据+进栈8个字型数据+出栈8个字型数据=26
为什么小甲鱼这里不是 mov sp,26h 而是 mov sp,24h ;此条指令为所填第二空 求解
首先, 你的计算公式出错了原本的数据的占用8个字, 然后程序申请了10个字 , 一共占用18个字,就是36个字节,36个字节换算成16进制就是24h,所以SP是24h 楼上说的对! 经鉴定 同意二楼 weixianlang 发表于 2011-8-11 08:27 static/image/common/back.gif
首先, 你的计算公式出错了原本的数据的占用8个字, 然后程序申请了10个字 , 一共占用18个字,就是36个字节,36 ...
原来是这样的公式 课本为什么是 mov sp, 30而小甲鱼的是 mov sp, 32 呢?难道课本那错了?
同意2楼的答案。不要将16进制与10进制搞混淆了。哥们
页:
[1]