程序员汇编语言

课本问题3.3,3.4

2018-08-07  本文已影响10人  柠檬就是酸

使用的教材是《汇编语言》第二版 王爽老师编写

3.3:

屏幕快照 2018-08-04 上午11.35.26.png 先向10000H的内存空间写入数据,并查看寄存器状态如下: 屏幕快照 2018-08-04 下午12.20.56.png 可以看出来已经向内存中写入了数据,此时CS:IP是073F:100,所以写入命令到这个位置: 屏幕快照 2018-08-04 下午12.25.50.png 写入命令后,使用d命令查看内存中的值,命令已经成功写入。 屏幕快照 2018-08-04 下午12.40.06.png

开始使用t进行单步调试,第一条命令使ax寄存器的值赋值为1000,第二条指令使ds寄存器的值赋值成1000,注意第三条了,mov ax,[0] 此时的DS寄存器是1000,也就是将起始地址为1000,偏移地址是0的数据赋值给ax。由于是ax寄存器16位,所以是两个字节,按照高字节在前,低字节在后,所以ax被赋值成了1123。

将t命令执行完: 屏幕快照 2018-08-04 下午12.47.20.png

这个问题主要说明了当子来看的问题,如果前面的寄存器是al或者ah,那么就会当成字节来看了。

问题3.4: 屏幕快照 2018-08-04 上午11.35.43.png

也是先向内存中存入数据,并查看是否存入: 屏幕快照 2018-08-04 下午12.54.29.png 查看后已经存入。写命令,注意直接写到CS:IP的位置上去: 屏幕快照 2018-08-04 下午12.59.16.png 写入命令并查看,先自己分析,前四条命令执行之后寄存器的值,首先,ax的值为1000,ds的值为1000,又将ax的值更改为2C34,接下来,将ax的2C34放到了段地址为1000的0号单元上,由于单位是字,所以1000开始的内存的值被更改为:34 2C 22 11,调试代码: 屏幕快照 2018-08-04 下午1.05.29.png

使用d命令查看内存的状态:[图片上传失败...(image-c2f78e-1533622192228)]

结果是对的。后面几条命令就和问题3.3是一样的了。

问题3.4主要说明了如何将数据从寄存器放入到内存单元

上一篇下一篇

猜你喜欢

热点阅读