我还有梦要追啊 发表于 2018-6-18 11:35:40

如何来确定以下俩个数的值,好困扰,,,一道课后习题

求各位大佬看一下,急!

人造人 发表于 2018-6-18 11:45:44

看不到完整的题目

他非她 发表于 2018-6-18 21:52:09

我的理解如下:
-G=3 13是执行0913:0003~0013的命令
0913:0003 mov si,0               ;si=0000H
0913:0006 mov al,    ;ds:(0913:0000)=5H=0000 0101B此时ax=0205H
0913:0008 add al, ;ds:(0913:0001)=96H=1001 0110B,和5H相加=1001 1011B=9BH, 此时ax=029BH
0913:000B jns 13          ;jns在小甲鱼老师和王爽的教材里没写,查资料是SF=0时跳转,上面指令的结果使得SF=1,所以继续向下执行
0913:000D neg al          ;查资料发现neg和求补码一样,取反+1, 1001 1011的补码是0110 0101B=65H,此时ax=0265H
0913:000F mov ,al;把65H存储到ds:(0913:0002)=65H
0913:0012 int 3             ;查资料, 中断int 3就是暂停的意思
因此AX=0265HBX=0000HSI=0000H

-D DS:0 7是显示0913:0000~0007这8个内存单元中的数值的命令
0913:0000   059665BE00008A04

我觉得题目中这段数值好像有问题:
-E DS:0
0913:0000    596    4657    0045   最后三个数值57,00和45应该是0913:0003~0005内存单元里的值,为何与下面第一条指令对应的机器码值不一样呢?

57158597@qq.com 发表于 2018-6-21 11:02:27

他非她 发表于 2018-6-18 21:52
我的理解如下:
-G=3 13是执行0913:0003~0013的命令
0913:0003 mov si,0               ;si=0000H


你思路上是对了,结果我没去验算但应该也没问题
-E DS:0
0913:0000    5 96    46 57    00 45
这个意思是,把原来的5改成96,46改成57,00改成45,所以没有影响到后面的03-05单元格

真要细究的话书上确实少印了个小数点,应该是这样的5.9646.5700.45
也可能是以前DEBUG的版本是没有那小数点的,我们现在用的才有
页: [1]
查看完整版本: 如何来确定以下俩个数的值,好困扰,,,一道课后习题