. : : 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