LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 583|回复: 3

一个奇怪的AT&T汇编的现象,望大虾帮忙解释一下

[复制链接]
发表于 2004-11-12 15:03:15 | 显示全部楼层 |阅读模式
我在运行AT&T汇编的示例程序,遇到这样的现象:
求一堆数中的最大数,我发现当数小于255时,显示结果正常,如222
但是当数据大于255时,会自动对此数取256的模,如最大数是256,结果是0,890时结果是122,我很不解,为什么??????/

.section .data
data_items:
        .long 3,67,34,242,255,25,54,34,890,22,66,11,0

.section .text
        .globl _start
       
        _start:
                movl $0,%edi
                movl data_items(,%edi,4),%eax
                movl %eax,%ebx

        start_loop:
                cmpl $0,%eax
                je loop_exit
                incl %edi
                movl data_items(,%edi,4),%eax
                cmpl %ebx,%eax
                jle start_loop
                movl %eax,%ebx
                jmp start_loop

        loop_exit:
                movl $1,%eax
                int $0x80
发表于 2004-11-12 17:04:21 | 显示全部楼层
一个程序的返回值 只能是 0~256
122=890 mod 256
 楼主| 发表于 2004-11-13 11:51:56 | 显示全部楼层
返回值是存在%ebx中的,而ebx是32位的呀!!理论上应该能返回2的31次方呀(出去前面的符号位),怎么就变成最大256的啦
发表于 2004-11-13 15:02:39 | 显示全部楼层
这是操作系统的规定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表