这个分支编程的实验和上个循环编程的作业一样都是5.1前后的汇编实验,同样是三个题,很简单就能搞定,不过整理起来实验报告真是一个麻烦事。
实验一
有 3 个字变量 x、y 和 z ,
若
否则,求 z=x+y−1 。
十分基础的分支问题,只需要 cmp 判断 x 和
接着,查看寄存器等相关信息。
可以明确看到数据段从 076A:0 开始,查看数据段内存。
此时我们的数据是 x 小于
结果无误,这种分支没有问题,接着我们调整数据,让 y 小于
此时,结果应该为 CH ,运行完程序并再次查看内存。
结果无误,至此,我们的两个分支都没有问题,实验一完毕。
实验二
有 1 个字节变量 a 和 1 个字变量
若 a 为偶数,则把
若 a 为奇数,则把
和上一个实验一样,换汤不换药,利用一次右移一次左移,与原数判断即可,代码如下:
查看寄存器等相关信息。
如上,数据段内存起始地址为 076A:0 ,查看对应内存。
此时, a 为偶数,如果
结果正是我们想要的,那么我们修改一下 a 为奇数。
此时,应该被清零的是
的确是 05H 被清零了,至此,实验没毛病,实验二完成。
实验三
有3个字变量 x、y 和 z ,一个字节变量
计算 z=x−y 。
若 z>0 ,则 f=1 ;
若 z<0 ,则 f=−1 ;
若 z=0 ,则 f=0 。
真是没什么可说的,直接上代码:
查看寄存器等相关信息。
从数据段对应内存 076A:0 起查看内存。
此时 x–y 结果应该是 −1 ,所以 z 是
看来这个分支是没有问题的,接着调整数据。
然后运行完程序并查看内存。
此时, z 结果为 0,
这样的话,
GG,完全没有问题,至此,验证三个分支均无误,实验三完成。
我本不想这么写报告的,实在是太慢了,无奈要求如此,要么不做,要么就好好按着要求做吧……