耶稣 发表于 2017-7-12 21:07:15

汇编调试问题

      为什么我定义数据段 但是视频里面并没有那多出来的16个字节呢?   

耶稣 发表于 2017-7-12 21:12:07

会不会是环境问题?

云野 发表于 2017-7-12 21:47:51

你要是想要获取到数据的地址就要
mov ax,data
mov ds,ax
你的程序没有寻data地址的语句、怎么能期望找到它

3-3 发表于 2017-7-13 09:55:42

本帖最后由 3-3 于 2017-7-13 16:09 编辑

sub a,2
这句话执行之后,并没有回到data的偏移地址,sub -2 应该是回到了 data中的'n'。
assume 只是设定了段的伪指令语句,它不能设置段寄存器的值,所以在程序中还需要通过指令语句来给数据段寄存器赋值,多实践就好了。

耶稣 发表于 2017-7-14 12:56:12

云野 发表于 2017-7-12 21:47
你要是想要获取到数据的地址就要
mov ax,data
mov ds,ax


之前试过data   获取的地址不对   跟视频不一样必须要-2 -1才能获取

耶稣 发表于 2017-7-14 12:59:14

3-3 发表于 2017-7-13 09:55
sub a,2
这句话执行之后,并没有回到data的偏移地址,sub -2 应该是回到了 data中的'n'。
assume 只是 ...

我那个-2是用来获取正确的ds      你注意看我初始化的那个ds是不对的    不知道是什么问题 视频中不用-2 初始化就是正确的

人造人 发表于 2017-7-14 16:36:40

本帖最后由 人造人 于 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 20:52:47

人造人 发表于 2017-7-14 16:36
试试这个
assume cs:code



前16个字节确实不见了版主你这个有什么区别?能说下?我记得ds也可以cs-2来获取的么?

人造人 发表于 2017-7-14 21:31:43

耶稣 发表于 2017-7-14 20:52
前16个字节确实不见了版主你这个有什么区别?能说下?我记得ds也可以cs-2来获取的么?

“我记得ds也可以cs-2来获取的么?”

你从哪听说的?我怎么不知道?

耶稣 发表于 2017-7-15 00:11:12

人造人 发表于 2017-7-14 21:31
“我记得ds也可以cs-2来获取的么?”

你从哪听说的?我怎么不知道?

我记得之前我看过一节小甲鱼的汇编    cs-2也可以得到ds地址   

耶稣 发表于 2017-7-15 00:11:35

人造人 发表于 2017-7-14 21:31
“我记得ds也可以cs-2来获取的么?”

你从哪听说的?我怎么不知道?

汇编第6章第3节

耶稣 发表于 2017-7-15 00:12:10

人造人 发表于 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:08:03

本帖最后由 人造人 于 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 11:38:44

人造人 发表于 2017-7-15 01:08
我刚刚看了一下那个视频,对于那个程序 ds = cs - 2 这没有问题,是正确的
但是这个规律不具有通用性 ...

好的谢谢版主热情答复   之前我用data直接复制ax 也是错的    后面用CS-2正确所以就一直认为我环境有问题
页: [1]
查看完整版本: 汇编调试问题