当前位置: 代码迷 >> 汇编语言 >> 异常:Improper operand type
  详细解决方案

异常:Improper operand type

热度:6927   发布时间:2013-02-26 00:00:00.0
错误:Improper operand type
;这是自动生成的代码模板
  STACKS SEGMENT STACK ;堆栈段
  DW 128 DUP(?) ;注意这里只有128个字节
  STACKS ENDS
  DATAS SEGMENT ;数据段
  MSG1 DB 'H ','$'
  MSG2 DB 10,40 DUP(8),'$' ;整理输出
  D1 DB 41H,70H,03H,53H,88H,16H,20H,3FH,74H,8EH,'$'
  D2 DB 10H,78H,23H,04H,1AH,7AH,35H,4BH,9FH,0BH,'$'
;请在这里定义您的数据
 
  DATAS ENDS
  CODES SEGMENT ;代码段
  ASSUME CS:CODES,DS:DATAS
  START: MOV AX,DATAS ;初始化
  MOV DS,AX
;请在这里添加您的代码



  PAIX MACRO X ;排序用宏
  LOCAL LOP1,LOP2,NEXT
  MOV DI,OFFSET X
  MOV CX,9
  MOV DX,9
  LOP1: MOV DI,OFFSET X ;2.CX=8
  LOP2: MOV AL,[DI]
  CMP AL,[DI+1]
  JNB NEXT
  XCHG AL,[DI+1]
  XCHG AL,[DI] ; 二重循环
  NEXT: INC DI
  LOOP LOP2
  DEC DX
  MOV CX,DX ;1.8 2.7... 8.1
  INC CX ;1.9 2.8... 9.1
  LOOP LOP1 ;1.CX=8
  ENDM



  BJSC MACRO ;比较DL-10,并输出DL的数字
  LOCAL HERE ; MOV DL,AL
  CMP DL,10
  JB HERE
  ADD DL,7 ;如果大于等于10,加在'A'上
  HERE: ADD DL,48 ;否则加在'0'上
  MOV AH,2
  INT 21H
  ENDM




  PRT MACRO X ;输出用宏
  LOCAL LOP3
  MOV SI,OFFSET X
  MOV CX,10
  LOP3: MOV AL,[SI]
  PUSH AX
  SHR AL,4
  MOV DL,AL
  BJSC
  POP AX
  AND AL,15
  MOV DL,AL
  BJSC
  MOV DX,OFFSET MSG1 ;以下三行输出H和空格
  MOV AH,9
  INT 21H
  INC SI
  LOOP LOP3
  ENDM



  PAIX D1
 ;这是(78) PRT D1
  MOV DX,OFFSET MSG2
  INT 21H
  PAIX D2
 ;这是(82) PRT D2
  MOV AX,4C00H ;退出程序
  INT 21H
  CODES ENDS
  END START


编译的时候出现:
hb6.asm(78):error A2052:Improper operand type
hb6.asm(82):error A2052:Improper operand type
各位大侠急救啊。。。。。

------解决方案--------------------------------------------------------
PRT应该是个宏,没有相关的宏定义也说不清楚
  相关解决方案