#include
int main()
{
int BUF[10]={222,3,1,-233,24,23,1,25,32,10},MIN,MAX;//MIN用于保存数组的最小值,MAX 用于保存最大值
_asm
{
//把数组BUF 的首地址赋值给ESI
LEA ESI,BUF
//寄存器EDX 作为计数器,作为判断循环结束的标志,初值为10 MOV EDX,10
//把数组的第一个数给EAX ,在整个循环中,EAX 中始终存放当前最大值 MOV EAX,[ESI]
//把数组的第一个数给EBX ,在整个循环中,EBX 中始终存放当前最小值 MOV EBX,[ESI]
BEGIN:
//计数器EDX 减
DEC EDX
//若EDX 为,表明循环结束,则跳至结尾处
JZ LAST
//ESI加,指向数组中的下一个数
ADD ESI,4
//ECX存储数组中当前元素
MOV ECX,[ESI]
//比较ECX 和EAX (当前最大值)
CMP EAX,ECX
//若EAX 的值大于ECX 的值,则跳至MIDDLE 标签,否则把ECX 的值给EAX JGE MIDDLE
//若EAX 的值小于ECX ,则把ECX 的值给EAX
MOV EAX,ECX
MIDDLE:
//比较ECX 和EBX (当前最小值)
CMP EBX,ECX
//若EBX 的值小于ECX ,则开始下一次循环
JNG BEGIN
//若EBX 的值大于ECX ,则把ECX 的值赋值给EBX
MOV EBX,ECX
//开始下一次循环
JMP BEGIN
LAST:
//把最大值给MAX
} MOV MAX,EAX //把最小值给MIN MOV MIN,EBX } printf(" 这个数为:" ); for (int i=0;i
程序运行结果如下:
#include
int main()
{
int BUF[10]={222,3,1,-233,24,23,1,25,32,10},MIN,MAX;//MIN用于保存数组的最小值,MAX 用于保存最大值
_asm
{
//把数组BUF 的首地址赋值给ESI
LEA ESI,BUF
//寄存器EDX 作为计数器,作为判断循环结束的标志,初值为10 MOV EDX,10
//把数组的第一个数给EAX ,在整个循环中,EAX 中始终存放当前最大值 MOV EAX,[ESI]
//把数组的第一个数给EBX ,在整个循环中,EBX 中始终存放当前最小值 MOV EBX,[ESI]
BEGIN:
//计数器EDX 减
DEC EDX
//若EDX 为,表明循环结束,则跳至结尾处
JZ LAST
//ESI加,指向数组中的下一个数
ADD ESI,4
//ECX存储数组中当前元素
MOV ECX,[ESI]
//比较ECX 和EAX (当前最大值)
CMP EAX,ECX
//若EAX 的值大于ECX 的值,则跳至MIDDLE 标签,否则把ECX 的值给EAX JGE MIDDLE
//若EAX 的值小于ECX ,则把ECX 的值给EAX
MOV EAX,ECX
MIDDLE:
//比较ECX 和EBX (当前最小值)
CMP EBX,ECX
//若EBX 的值小于ECX ,则开始下一次循环
JNG BEGIN
//若EBX 的值大于ECX ,则把ECX 的值赋值给EBX
MOV EBX,ECX
//开始下一次循环
JMP BEGIN
LAST:
//把最大值给MAX
} MOV MAX,EAX //把最小值给MIN MOV MIN,EBX } printf(" 这个数为:" ); for (int i=0;i
程序运行结果如下: