汇编调试问题
为什么我定义数据段 但是视频里面并没有那多出来的16个字节呢? 会不会是环境问题? 你要是想要获取到数据的地址就要mov ax,data
mov ds,ax
你的程序没有寻data地址的语句、怎么能期望找到它 本帖最后由 3-3 于 2017-7-13 16:09 编辑
sub a,2
这句话执行之后,并没有回到data的偏移地址,sub -2 应该是回到了 data中的'n'。
assume 只是设定了段的伪指令语句,它不能设置段寄存器的值,所以在程序中还需要通过指令语句来给数据段寄存器赋值,多实践就好了。 云野 发表于 2017-7-12 21:47
你要是想要获取到数据的地址就要
mov ax,data
mov ds,ax
之前试过data 获取的地址不对 跟视频不一样必须要-2 -1才能获取 3-3 发表于 2017-7-13 09:55
sub a,2
这句话执行之后,并没有回到data的偏移地址,sub -2 应该是回到了 data中的'n'。
assume 只是 ...
我那个-2是用来获取正确的ds 你注意看我初始化的那个ds是不对的 不知道是什么问题 视频中不用-2 初始化就是正确的 本帖最后由 人造人 于 2017-7-14 16:42 编辑
试试这个
assume cs:code
data segment
msg:
db 'hello world!', '$'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov dx, msg
mov ah, 9
int 21h
mov ax,4C00H
int 21H
code ends
end start
人造人 发表于 2017-7-14 16:36
试试这个
assume cs:code
前16个字节确实不见了版主你这个有什么区别?能说下?我记得ds也可以cs-2来获取的么? 耶稣 发表于 2017-7-14 20:52
前16个字节确实不见了版主你这个有什么区别?能说下?我记得ds也可以cs-2来获取的么?
“我记得ds也可以cs-2来获取的么?”
你从哪听说的?我怎么不知道?
人造人 发表于 2017-7-14 21:31
“我记得ds也可以cs-2来获取的么?”
你从哪听说的?我怎么不知道?
我记得之前我看过一节小甲鱼的汇编 cs-2也可以得到ds地址 人造人 发表于 2017-7-14 21:31
“我记得ds也可以cs-2来获取的么?”
你从哪听说的?我怎么不知道?
汇编第6章第3节 人造人 发表于 2017-7-14 21:31
“我记得ds也可以cs-2来获取的么?”
你从哪听说的?我怎么不知道?
http://bbs.fishc.com/forum.php?mod=viewthread&tid=90697&page=1#pid2944498 之前发过一个关于这个问题的帖子 你看看 本帖最后由 人造人 于 2017-7-15 01:10 编辑
耶稣 发表于 2017-7-15 00:12
http://bbs.fishc.com/forum.php?mod=viewthread&tid=90697&page=1#pid2944498 之前发过一个关于这个问 ...
我刚刚看了一下那个视频,对于那个程序 ds = cs - 2 这没有问题,是正确的
但是这个规律不具有通用性,也就是说,对于其他程序,无效
不信?
你试试这个程序
assume cs:code
data segment
msg:
db 'hello world!', '$'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov dx, msg
mov ah, 9
int 21h
mov ax,4C00H
int 21H
code ends
end start
还是 ds = cs - 2 吗?
所以,最好还是
mov ax, data
mov ds, ax
这样,比较好 人造人 发表于 2017-7-15 01:08
我刚刚看了一下那个视频,对于那个程序 ds = cs - 2 这没有问题,是正确的
但是这个规律不具有通用性 ...
好的谢谢版主热情答复 之前我用data直接复制ax 也是错的 后面用CS-2正确所以就一直认为我环境有问题
页:
[1]