实验内容:
1)在数据区中定义三个带符号字节变量。
2)编写程序将其中的最大数找出送到MAX单元中。
实验要求:
通过测试有符号数和无符号数比较大小,掌握无符号数和带符号数比较大小转移指令的区别。(无符号jb/ja、带符号jl/jg)
源代码:
;four.asm in Windows Console
;在数据区中定义三个带符号字节变量
;将其中的最大数找出送到MAX单元中
include io32.inc
.data
max dword ?;存放最大值
x dword 30
y dword 20
z dword 10
.code
start:
mov ebx,x;将x放置ebx
mov ecx,y;将y放置ecx
cmp ebx,ecx;比较x,y
jg lable1;如果x>y,则转移指令
mov ebx,z;x<=y,将z放置于ebx
cmp ebx,ecx;比较y,z
jg lable2;如果z>y,则转移指令
mov eax,ecx;z<=y,将最大值放置eax
jmp d;转移指令,显示最大值
lable1: mov ecx,z;将z放置ecx
cmp ebx,ecx;比较x,z
jg lable2;如果x>z,则转移指令
mov eax,ecx;x<=z,将最大值放置eax
jmp d;显示最大值
lable2: mov eax,ebx;
d: mov max,eax;将最大值放入max
call dispsid;显示eax,即最大值
exit 0
end start
实验体会:
通过此次实验掌握了无符号和带符号转移指令的区别;无符号转移指令影响CF标志位,通过CF标志位判断;带符号转移指令影响SF,OF标志位,通过这两个标志位判断;所以有无符号数需要两条指令来实现;进一步加深了
对跳转指令的理解。