学习当然不能只是看书上的知识啦,只有实际上手操作才能体验到计算机语言的乐趣与奥妙。接下来就是我根据书上的实例和实验在个人计算机上做出的练习
先熟悉一下-e -a等命令
CS=073F,IP=0100,所以内存073F:0100处的指令为cpu当前要读取和执行的指令,此处存放的机器码为00 00 ,对应的汇编指令为ADD balabalbla
-r命令可以改变寄存器中的内容(修改cs与ip的内容)
-d查看10000H(1000:0)内存处的内容(-d 1000:0会列出当前地址开始的128哥内存单元的内容)
行起始地址 内存单元内容 数据对应的ASCII码
-e改写内存内容
用-e将机器码写入内存再用-u察看机器码对应的汇编指令
-t执行一条或多条汇编指令(将cs:ip指向1000:0)
-a以汇编指令的形式在内存中写入机器指令
实验任务
(1)
这个实验注意寄存器溢出不计,编译时cs:ip地址注意指向起始写入地址,-e写机器指令,-a写汇编指令
(2)
jump2000:0003表示修改cs:ip,在此实验中表现为重复编译add ax,ax;
使用-a命令执行daa ax,ax 8次就是2的8次方的16进制0100H,十进制的256
(3)
如图所示命令可知,dos内显示区域起始位置为b8000,奇数项数字控制图案(第一行中的奇数项1代表笑脸),偶数项两个数字,后位代表0-f共16种颜色,前位0-7和8-f颜色都有背景色(颜色和后位一样,而且8-f有闪烁效果)
由下图可知我的实验三显示的是显存地址空间的内容
实验3总结不全,忘各位大佬指正。