. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
第一个程序
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
AL的最大承受数值范围究竟是多少?
[待解决]
回复[
2
次 ] 点击[
309
次 ]
aaabbb
[帖 主]
[ 发表时间:2009-04-05 15:13 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2009-03-25 17:15
mov al,要传送的数值(比如:mov al,offh或者mov al,255)
就是说后面要传送的值可以小于AL的承受范围但是不能大于AL的承受范围,但是我现在执行这样的一个指令
mov al,0ffffffffh(请注意,要传送的F共八个)如果我此时后面传送的F小于八个或者大于八过,编译都无法通过,只有等于八的时候才可以通过,后来在debug中用-U命令查了一下则是mov al,ff 请问这究竟是怎么回事?不是说传送的数据不能大于AL的承受范围了吗,那么我为什么执行8个f以后还会编译通过呢?这8个f肯定大于AL的数值承受范围了,那么为什么大于或者小于8个F又不能通过编译了呢?
mess
[第
1
楼]
[ 回复时间:2009-04-06 11:08 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
首先al是8位寄存器,也就是最多能存放8个二进制数,即2个十六位二进制数。即al存放的数值是0~ffH
如果你传给al的值大于2位十六进制数,它也只会存放低两位。
这8个f肯定大于AL的数值承受范围了,那么为什么大于或者小于8个F又不能通过编译了呢?
--------------
是否通过编译是编译器规定的部分。而实际al存放的值一定是0~ffh的。而mov al,0ffffffffh的使用相当于mov al,0ffh,但前者使用是不符合逻辑的。
这里楼主用的是mov al,..来分析的,用ax呢?
prettyshazhu
[第
2
楼]
[ 回复时间:2009-04-13 15:10 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-12-02 23:20
我用A命令....输入
mov al,ff (进入下一句指令输入)
mov al,ffff
mov al,ffffffff
等均提示错误..并要求重新输入...
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved