. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为什么定义16进制数前面要加0?  [已解决] 回复[ 11次 ]   点击[ 351次 ]  
hzd1990
[帖 主]   [ 发表时间:2009-12-24 13:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-19 12:21
定义a9h的时候前面要加0 ,定义数字9ah前面又不用加0 为什么要这样???
scuzg
[第1楼]   [ 回复时间:2009-12-24 17:42 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
是为了有别于汇编语言的标识符(标号或符号名)。比如:
FH      DB ?

CDH:    ...
        loop CDH
上述“FH”和“CDH”分别是合法的“变量名(符号名的一种)”和“标号”,如果最高位为 A~F 的 16 进制数不前缀 0 ,就很难和符号名和标号分开。
regex
[第2楼]   [ 回复时间:2009-12-24 22:03 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
加不加零, 没本质区别吧!
scuzg
[第3楼]   [ 回复时间:2009-12-24 22:15 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
不加零不能通过编译,这很“本质”哈!
willflyz
[第4楼]   [ 回复时间:2009-12-25 10:17 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2009-02-14 14:25
这个编译器要求的,就象其它一些语言规定的一样定义变量的时候不能以数字开头。不过你这个问题也不难理解,加零编译器就认为是数字,如果不加可能会以为是字符串之类的,所以加了零不会有岐义,看起来更严谨一点。
mess
[第5楼]   [ 回复时间:2009-12-25 10:27 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
这个是汇编语法的一个设计。

比如下面这个:
ah
  一,可以解释为寄存器ah
  二,可以解释为十六进制数字a。

二义性的表达需要一个办法解决,数字中含字母的,在前面加0就是一个解决办法。0ah代表数字a,ah则为寄存器。
scuzg
[第6楼]   [ 回复时间:2009-12-25 10:40 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
mess说得透彻!
hzd1990
[第7楼]   [ 回复时间:2009-12-25 22:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-19 12:21
那为什么在把八位的扩展成16位的时候,有的是前面直接加两个0,有的又是加0FF???
hzd1990
[第8楼]   [ 回复时间:2009-12-25 22:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-19 12:21
这个是汇编语法的一个设计。

比如下面这个:
ah
  一,可以解释为寄存器ah
  二,可以解释为十六进制数字a。

二义性的表达需要一个办法解决,数字中含字母的,在前面加0就是一个解决办法。0ah代表数字a,ah则为寄存器。
------------------
回复:那为什么在把八位的扩展成16位的时候,有的是前面直接加两个0,有的又是加0FF???
hzd1990
[第9楼]   [ 回复时间:2009-12-25 22:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-19 12:21
是为了有别于汇编语言的标识符(标号或符号名)。比如:
FH      DB ?

CDH:    ...
        loop CDH
上述“FH”和“CDH”分别是合法的“变量名(符号名的一种)”和“标号”,如果最高位为 A~F 的 16 进制数不前缀 0 ,就很难和符号名和标号分开。
------------------
回复:那为什么在把八位的扩展成16位的时候,有的是前面直接加两个0,有的又是加0FF???
hzd1990
[第10楼]   [ 回复时间:2009-12-25 22:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-19 12:21
噢,全懂了。。。。。thanks!!!楼上的朋友们
hzd1990
[第11楼]   [ 回复时间:2009-12-25 22:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:20
注册日期:2009-10-19 12:21
此贴由 贴主 于 [ 2009-12-25 22:43 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(regex):6分   4楼(willflyz):4分   5楼(mess):10分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved