32位有符号数最大值和最小值

const int max = ~(1<<31);

1<<31=80000000h

-32768到32767对应80000000h到7FFFFFFFh
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设这10个无符号数存储在数组中,可以按照以下步骤求解最大和最小: 1. 将第一个数存储在累加器中,作为当前最大和最小。 2. 依次将数组中的其他数与当前最大和最小比较。 3. 如果当前数比最大大,将当前数存储到累加器中,作为新的最大。 4. 如果当前数比最小小,将当前数存储到累加器中,作为新的最小。 5. 处理完所有数后,累加器中的即为最大和最小。 下面是一个示例的汇编代码,假设这10个无符号数存储在名为 nums 的数组中,每个数占用1个字节的空间: ``` section .data nums db 10, 7, 24, 15, 2, 6, 9, 17, 3, 12 ; 10个无符号数 section .text global _start _start: mov al, byte [nums] ; 将第一个数存储到累加器中 mov bl, byte [nums+1] ; 将下一个数存储到 bl cmp bl, al ; 比较 bl 和 al ja update_max ; 如果 bl 大于 al,跳转到 update_max jb update_min ; 如果 bl 小于 al,跳转到 update_min jmp next_num ; 如果 bl 等于 al,跳转到 next_num update_max: mov al, bl ; 将 bl 存储到累加器中,作为新的最大 jmp next_num update_min: mov bl, al ; 将 al 存储到 bl 中,作为新的最小 jmp next_num next_num: add si, 1 ; 数组索引加1 cmp si, 10 ; 比较索引和10 je done ; 如果索引等于10,跳转到 done mov bl, byte [nums+si] ; 将下一个数存储到 bl cmp bl, al ; 比较 bl 和 al ja update_max ; 如果 bl 大于 al,跳转到 update_max jb update_min ; 如果 bl 小于 al,跳转到 update_min jmp next_num done: ; 最大和最小存储在累加器 al 中,可以将它们存储到其他地方,比如内存或寄存器 ; 这里为了方便直接输出最大和最小 mov dl, al ; 将最大存储到 dl 中 add dl, '0' ; 转换为 ASCII 码 mov al, 2 ; 系统调用号,表示输出字符 mov bh, 0 ; 表示输出到标准输出 int 0x80 ; 调用系统调用 mov dl, bl ; 将最小存储到 dl 中 add dl, '0' ; 转换为 ASCII 码 mov al, 2 ; 系统调用号,表示输出字符 mov bh, 0 ; 表示输出到标准输出 int 0x80 ; 调用系统调用 ; 退出程序 mov eax, 1 ; 系统调用号,表示退出程序 xor ebx, ebx ; 返回 int 0x80 ; 调用系统调用 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值