汇编-分支编程

来源:互联网 发布:scopus数据库简介 编辑:程序博客网 时间:2024/06/16 10:19

这个分支编程的实验和上个循环编程的作业一样都是5.1前后的汇编实验,同样是三个题,很简单就能搞定,不过整理起来实验报告真是一个麻烦事。

实验一

有 3 个字变量 xyz
x>y,则求 z=xy+1
否则,求 z=x+y1

十分基础的分支问题,只需要 cmp 判断 xy 大小,然后 jl 跳转即可,代码如下:

描述

接着,查看寄存器等相关信息。

描述

可以明确看到数据段从 076A:0 开始,查看数据段内存。

描述

此时我们的数据是 x 小于 y,结果应该为 2,运行完程序并再次查看数据段内存。

描述

结果无误,这种分支没有问题,接着我们调整数据,让 y 小于 x

描述

此时,结果应该为 CH,运行完程序并再次查看内存。

描述

结果无误,至此,我们的两个分支都没有问题,实验一完毕。

实验二

有 1 个字节变量 a 和 1 个字变量 x
a 为偶数,则把 x 中低字节清 0,高字节不变;
a 为奇数,则把 x 中高字节清 0,低字节不变。

和上一个实验一样,换汤不换药,利用一次右移一次左移,与原数判断即可,代码如下:

描述

查看寄存器等相关信息。

描述

如上,数据段内存起始地址为 076A:0,查看对应内存。

描述

此时,a 为偶数,如果 C4H 被覆盖则无误,运行完程序并再次查看内存。

描述

结果正是我们想要的,那么我们修改一下 a 为奇数。

描述

此时,应该被清零的是 05H,再次运行完并查看内存。

描述

的确是 05H 被清零了,至此,实验没毛病,实验二完成。

实验三

有3个字变量 xyz,一个字节变量 f
计算 z=xy
z>0,则 f=1
z<0,则 f=1
z=0,则 f=0

真是没什么可说的,直接上代码:

描述

查看寄存器等相关信息。

描述

从数据段对应内存 076A:0 起查看内存。

描述

此时 xy 结果应该是 1,所以 zFFFFHfFH 的话就是我们想要的。

描述

看来这个分支是没有问题的,接着调整数据。

描述

然后运行完程序并查看内存。

描述

此时,z 结果为 0,f 结果为 0,没毛病,继续调整数据,使 z 结果为正数。

描述

这样的话,z 的结果应该为 1Hf 的值也为 1H。查看数据……

描述

GG,完全没有问题,至此,验证三个分支均无误,实验三完成。

我本不想这么写报告的,实在是太慢了,无奈要求如此,要么不做,要么就好好按着要求做吧……

1 0
原创粉丝点击