Huang1234 发表于 2017-12-13 14:06:23

问题3.5 求解AX=?,BX=?

这个问题3.5我没有看懂每步执行后,AX的值是多少?
mov ax,123b
mov ds,ax
mov ax,0
add ax,   AX=?

add ax,   AX=?

add ax,   AX=?


我在DEBUG 里执行后,内存段 123b:0里的值 为: B8 3B 12 8E D8 B8 00
我是在段-a 123b:0 写入的程序
123b:0000 mov ax,123b
. ....
用-d 查询的值 为什么是: B8 3B 12 8E D8 B8 00

BngThea 发表于 2017-12-13 14:27:27

B8 3B 12 是数据形式,如果是代码格式就会被翻译成
mov ax,123B

所以以下就是结果
add ax,   AX=3BB8

add ax,   AX=3BB8+8E12=CACA

add ax,   AX=CACA+B8D8=83A2

linxingcs 发表于 2017-12-13 14:37:42

计算机内存里能存储的都是二进制数据,并不能真的存放mov ax,123bh 这种文本,
写好的这些汇编指令都会经过编译链接汇编成机器指令就是类似B8 3B 12这种,
B8 3B 12在机器的角度理解就是mov ax ,123bh的意思
在debug里,你可以用-u来将机器指令翻译成对应的汇编指令

Huang1234 发表于 2017-12-13 14:38:17

BngThea 发表于 2017-12-13 14:27
B8 3B 12 是数据形式,如果是代码格式就会被翻译成
mov ax,123B



这下,明白了,把指令输入DEBUG后,我以为是电脑自动计算出的 B8 3B 12 8E D8 B8...,、
也就是说被译成机器语言了,这样理解对吗?
这两例子的意思,就是为了说字型数据和字节型数据 的区别对吗?
感谢楼主

BngThea 发表于 2017-12-13 14:42:48

Huang1234 发表于 2017-12-13 14:38
这下,明白了,把指令输入DEBUG后,我以为是电脑自动计算出的 B8 3B 12 8E D8 B8...,、
也就是说被译成 ...

对,是这个意思

Huang1234 发表于 2017-12-13 14:43:40

linxingcs 发表于 2017-12-13 14:37
计算机内存里能存储的都是二进制数据,并不能真的存放mov ax,123bh 这种文本,
写好的这些汇编指令都会经 ...

谢谢楼主解答,在没有输入DEBUG之前,我们能算出
mov ax,123b
mov ds,ax
mov ax,0
add ax,   AX=?

add ax,   AX=?

add ax,   AX=?

Huang1234 发表于 2017-12-14 12:57:47

Huang1234 发表于 2017-12-13 14:43
谢谢楼主解答,在没有输入DEBUG之前,我们能算出
mov ax,123b
mov ds,ax


我已经通过DEBUG 解出
DS:0000=B8   AX=12B8
DS:0001=3B   AX=123B
DS:0002=12   AX=1212

谢谢各位的解答
页: [1]
查看完整版本: 问题3.5 求解AX=?,BX=?