汇编小白求助
我学习到了小甲鱼的,汇编入门 零基础入门学习汇编语言 p30遇到一个问题assume cs:abc
abcsegment
dw 0123H,0456,0789,0abcH,0defH,ofedH,0cbaH,0987H 这里都是16进制的
dw 0,0,0,0,0,0,0,0 这里不知道是16进制还是十进制当然都无所谓以为他都是0
start:mov ax,cs
mov ss,ax
mov sp,32 就这里这个32我不知道是16进制还是十进制,小甲鱼没有说,但是什么第一个dw是16进制的他占用了0-15,下面那个占用了16-31的那他们都是16进制才对吧可为什么不标H还是说什么(主要是收到弹幕影响) 没有加 h,就是 10 进制
人造人 发表于 2021-10-3 23:55
没有加 h,就是 10 进制
那么这个32的十进制是怎么来的 摸你穷 发表于 2021-10-4 20:40
那么这个32的十进制是怎么来的
随便给的一个数,够用就可以了
人造人 发表于 2021-10-4 20:48
随便给的一个数,够用就可以了
ss和sp是栈底按道理应该是32h的为什么这里却是十进制我搞不懂,你如果会能不能说清楚一点 摸你穷 发表于 2021-10-4 21:57
ss和sp是栈底按道理应该是32h的为什么这里却是十进制我搞不懂,你如果会能不能说清楚一点
你贴的这个代码中的那个 32 的确是随便指定的
人造人 发表于 2021-10-4 22:21
你贴的这个代码中的那个 32 的确是随便指定的
这个是我在B站的鱼C_小甲鱼UP主的【汇编入门】《零基础入门学习汇编语言》P30包含多个段的程序02视频里的04:15
程序如下:
assume cs:codesg
abcsegment
dw 0123H,0456,0789,0abcH,0defH,ofedH,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
将程序写入Visual Studio Code中保存为asm格式在用win7.32位的命令提示符用Masm.exe和Link.exe运行asm得到exe文件用debug运行exe文件运行到写指令时mov sp,,32可是debug是20
我的问题是栈底的偏移地址应该是32但是在debug中却是20了是为什么 摸你穷 发表于 2021-10-5 00:14
这个是我在B站的鱼C_小甲鱼UP主的【汇编入门】《零基础入门学习汇编语言》P30包含多个段的程序02视频里的 ...
debug 中默认是 16 进制的
mov sp,,32
让栈顶指向第 2 个 dw 的后面,就是 start 的位置 1. 代码中有好多的错误,提问题就认真一点
2. mov sp,,32,是 mov sp,32
3. mov sp, 32,相当于 mov sp, start
人造人 发表于 2021-10-5 09:35
1. 代码中有好多的错误,提问题就认真一点
2. mov sp,,32,是 mov sp,32
3. mov sp, 32,相当于 mov sp,...
抱歉我写回复的时候已经是晚上了没注意,可是你看到了你的debug上sp变成20了就是32的十进制变成了16进制20了。我的意思是我因不应该写代码的时候在32的后面加H让他写出来是16进制的 摸你穷 发表于 2021-10-6 00:09
抱歉我写回复的时候已经是晚上了没注意,可是你看到了你的debug上sp变成20了就是32的十进制变成了16进制2 ...
没看懂你的问题 人造人 发表于 2021-10-6 00:11
没看懂你的问题
那我问一下这里为什么要设定SP是32,还是说什么数字都行?
还有为什么我设定是32,debug却变成了20 摸你穷 发表于 2021-10-6 23:08
那我问一下这里为什么要设定SP是32,还是说什么数字都行?
还有为什么我设定是32,debug却变成了20
mov sp, 32,相当于 mov sp, start
让栈顶指向第 2 个 dw 的后面,就是 start 的位置
debug 中默认是 16 进制的 本帖最后由 摸你穷 于 2021-10-7 00:00 编辑
人造人 发表于 2021-10-6 23:34
mov sp, 32,相当于 mov sp, start
让栈顶指向第 2 个 dw 的后面,就是 start 的位置
debug 中默认是 1 ...
代码中第1个dw和第2个dw一共占用了31个内存单元而栈顶应该指向31的下一个内存单元也就是32
但编译器默认是10进制如果不在32后面加H(mov sp,32H)的话在debug中sp就会变成20
我的问题就是这个H应不应该加 摸你穷 发表于 2021-10-6 23:56
代码中第1个dw和第2个dw一共占用了31个内存单元而栈顶应该指向31的下一个内存单元也就是32
但编译器默认 ...
不应该加,debug 默认是 16 进制的
debug 中显示的 20 是十六进制的,换算成十进制就是 32
人造人 发表于 2021-10-7 00:01
不应该加,debug 默认是 16 进制的
debug 中显示的 20 是十六进制的,换算成十进制就是 32
他们不是占用了31个内存单元吗
debug显示20不就等于他们占用了19个内存单元吗 摸你穷 发表于 2021-10-7 23:12
他们不是占用了31个内存单元吗
debug显示20不就等于他们占用了19个内存单元吗
不是 31 个,是 32 个,你再看一看
人造人 发表于 2021-10-7 23:43
不是 31 个,是 32 个,你再看一看
他是占用31个但是栈顶要选择下一位内存地址
你直接回答他们明明占用32个内存单元
debug显示20不就等于他们占用20个内存单元吗 啊不要绕 不要绕了 你懂我的意思吧,求求你回答我的问题啊我就是这里不懂啊 摸你穷 发表于 2021-10-7 23:48
他是占用31个但是栈顶要选择下一位内存地址
你直接回答他们明明占用32个内存单元
debug显示20不就等于 ...
是 32 个,一个 dw 是 2 个,一共 16 个 dw
debug 显示的 20 不是占用 20 个, 是占用 20h 个
你在 debug 中看到的数字全部都是 十六进制的
页:
[1]
2