| 
 | 
 
 
发表于 2018-6-18 21:52:09
|
显示全部楼层
 
 
 
我的理解如下: 
-G=3 13是执行0913:0003~0013的命令 
0913:0003 mov si,0                 ;si=0000H 
0913:0006 mov al,[si]    ;ds:[0](0913:0000)=5H=0000 0101B  此时ax=0205H 
0913:0008 add al,[si+1] ;ds:[0+1](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 [si+2],al;把65H存储到ds:[0+2](0913:0002)=65H 
0913:0012 int 3             ;查资料, 中断int 3就是暂停的意思 
因此AX=0265H  BX=0000H  SI=0000H 
 
-D DS:0 7是显示0913:0000~0007这8个内存单元中的数值的命令 
0913:0000     05  96  65  BE  00  00  8A  04 
 
我觉得题目中这段数值好像有问题: 
-E DS:0 
0913:0000    5  96    46  57    00  45     最后三个数值57,00和45应该是0913:0003~0005内存单元里的值,为何与下面第一条指令对应的机器码值不一样呢? |   
 
 
 
 |