□为 发表于 2012-9-25 13:19:25

关于第二章实验一(2)

本帖最后由 □为 于 2022-11-17 20:56 编辑

实验一 查看CPU和内存,用机器指令和汇编指令编程(2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。   mov ax,1   add ax,ax   jmp 2000:0003
求详细解答过程!

s0512 发表于 2012-9-25 13:19:26

□为 发表于 2012-9-25 16:51 static/image/common/back.gif
没人么……

哥慢慢道来{:5_109:}
mov ax,1   //ax:= 1   
add ax,ax//ax寄存器中的数值加上ax中滴数值ax:=ax+ax;
jmp 2000:0003修改CS~IP 值为:2000:0003,也就是跳到2000:0003处;
===================================================
执行完MOV AX,,1时,CS~IP 值为:2000:0002,因为mov ax,0001的机器码为:B8 01 00 三字节,所以IP值 从0修改到2;也就是说
一起进步吧师弟{:5_95:}

□为 发表于 2012-9-25 13:19:59

自杀。。:$:$:$   哎话说我这人就喜欢钻牛角尖…

□为 发表于 2012-9-25 16:51:20

没人么……:'(:'(:'(:'(:'(

蜡笔小牛牛 发表于 2012-9-25 20:10:31

将代码写入内存:
使用a指令。
具体输入:a 2000:0
mov ax,1
add ax,ax
jmp 2000:03
然后查看寄存器,修改cs:ip指向2000:0
开始按T单步执行,你可以观察寄存器的变化,每执行一次,多加一次方,第一次循环执行完,2的一次方,第二次执行完,2的二次方……8次几为2的八次方

□为 发表于 2012-9-26 11:23:11

蜡笔小牛牛 发表于 2012-9-25 20:10 static/image/common/back.gif
将代码写入内存:
使用a指令。
具体输入:a 2000:0


嗯嗯!!!谢啦!!~~   嘿嘿

□为 发表于 2012-9-26 11:23:45

s0512 发表于 2012-9-25 18:29 static/image/common/back.gif
哥慢慢道来
mov ax,1   //ax:= 1   
add ax,ax//ax寄存器中的数值加上ax中滴数值ax:=ax+a ...

嗯嗯 懂了!!!嘿嘿!~~~

□为 发表于 2012-9-26 11:25:25

蜡笔小牛牛 发表于 2012-9-25 20:10 static/image/common/back.gif
将代码写入内存:
使用a指令。
具体输入:a 2000:0


嗯嗯!~~ 明白了~~~

痛彻心扉 发表于 2012-11-19 15:12:12

:@ buzhdoa ni wendshengm
页: [1]
查看完整版本: 关于第二章实验一(2)