. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->汇编语言学习交流区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于使用 ptr 属性修改运算符  [待解决] 回复[ 2次 ]   点击[ 541次 ]  
yuhuofei
[帖 主]   [ 发表时间:2008-11-18 11:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-17 21:27
学了这么久,仍然搞不清楚到底什么时候使用 ptr 。 
如题所示: 
设(BCD1)=1234H,(BCD2)=4612H,完成BCD3 <- (BCD1) - (BCD2)。编写指令序列如下: 
1  MOV AL , BCD1 
2  SUB AL , BCD2 
3  DAS 
4  MOV BCD3,AL 
5  MOV AL , BCD1+1 
6  SBB AL , BCD2+1 
7  DAS 
8  MOV BCD3+1 , AL 


(为了说明方便给每一行加上序号) 
1、2、4、5、6、8行的指令中BCD1、BCD2为什么不用加ptr? 

而下列题, 
BUFFER为字变量 
MOV AL , BUFFER 
这条语句就是错误的,原因是两操作数类型不匹配。 

什么原因呢?请指教
mess
[第1楼]   [ 回复时间:2008-11-18 18:54 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
BCD1只是个标号,没有描述单元长度,后面的buffer相反,所以后面的使用过程中有不匹配错误。

MOV AL , BCD1 
-----------
这个举例吧,al能告诉cpu操作的长度,所以没问题。
yuhuofei
[第2楼]   [ 回复时间:2008-11-18 21:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-17 21:27
BCD1只是个标号,没有描述单元长度,后面的buffer相反,所以后面的使用过程中有不匹配错误。

MOV AL , BCD1 
-----------
这个举例吧,al能告诉cpu操作的长度,所以没问题。
------------------
回复:
不能把BCD1认为成字变量吗?为什么?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved