新人求教。。检测点3.1
本帖最后由 axix005 于 2015-7-31 09:11 编辑---------------------------------
cs= 2000h ,ip=0, ds=1000h,ax=0 ,bx=0;
写出cpu执行的指令序列 汇编指令
写出CPU执行每条指令后,CS。IP和相关寄存器中的数值。
3体会,数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序
mov ax,6622 CS=2000hip=0003ds=1000ax=6622 bx=0
jmp 0ff0:0100 CS=1000 ip=0 ds=1000 ax=6622bx=0
mov ax,2000h cs=1000ip=3 ds=1000 ax=2000 bx=0
mov ds,ax cs=1000ip=5ds=2000ax=2000bx=0
mov ax,cs=1000ip=8ds=2000 ax=0089 bx=0
mov ax,cs=1000ip=B ds=2000 ax=0066bx=0
为什么mov ax,mov ax, 和网上答案不一样?
图片要的不是0008和0002吗,为什么是整个c389和6622了 数据和代码存在内存中是一样的,他们的性质是一样的,都是10101011的二进制代码。你给cpu说它是数据,那么cpu就把它当数据,反之就是代码命令。代码也可以当数据,但是没意义。我只能帮到这里了,我也不是很懂 你没发现ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:.所以取得是C389 {:1_1:}{:1_1:}{:1_1:}{:1_1:} 数据和程序要看你自己怎么定义了,你要他是程序就是程序,要他是数据他就是数据,都是二进制的代码,以线性存储
ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:.所以取得是C389 本帖最后由 axix005 于 2015-7-31 20:43 编辑
jmuxiaolu 发表于 2015-7-31 12:47
你没发现ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是 ...
也就是内存段不能不要C3只单独提取20008这个单个单元字节89吗? 本帖最后由 axix005 于 2015-8-2 19:15 编辑
结贴,明白了,学到第5章讲解()才明白ax一定等于字,,,细到高低位才是求字节
哈哈,今天看视频才知道3.0就讲到了,,,,我都是先看书后看视频- -!~~ 你没发现ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:.所以取得是C389
页:
[1]