;这是自动生成的代码模板
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应该是个宏,没有相关的宏定义也说不清楚