回 帖 发 新 帖 刷新版面

主题:请教一个题目

题目: 视变量buf1和buf2定义在同一个段中,偏移地址分别是102H和3ACH,两个变量对应的缺省段寄存器都是ES,寄存器BX和BP的值分别是2000H和3000H。试计算下列各指令中源操作数的偏移地址值,并判断缺省段寄存器是哪一个。
mov al,[buf2+bp-4000h]

解:偏移地址:3ach+3000h-4000h=[size=4]0f3ach[/size]
大家看这题答案中,明明是f3ach就好了,我不懂的是为什么在前面加0?
请大侠们给我讲讲,小弟不胜感激!

回复列表 (共4个回复)

沙发

我不懂的是为什么在前面加0?
因为它的第一个字母是英文,只要是英文前面就加0
如:
0a100
0fe00
 1f00

板凳

这是汇编语言中规定的吧,若开头第一个是字母,则要在前面加0.原因是,防止与汇编中的一些寄存器之类的混淆重复,如有个DOS功能号为oah,表示的是第十号功能,但又有个寄存器为ah,在汇编中若不加以区别,就会混淆。呵呵,不知道听得明白否^-^

3 楼

以数字开头的人为是立即数,否则认为是自定义的标识符或系统关键字

4 楼

立即数 若 为 字符(16位的 )就 要用0开头!
我 是 大一 的 专科 生
山东教育学院的 
计算机系的
多多指教!
QQ:723792983

我来回复

您尚未登录,请登录后再回复。点此登录或注册