1、编译显示四位十六进制 0A490H
DATA SEGMENT
M DW 0A490H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,M
CALL DISP4
INT 20H
DISP4 PROC NEAR
PUSH BX
PUSH CX
PUSH DX
PUSH AX
MOV AL,AH
CALL DISP2
POP AX
CALL DISP2
POP DX
POP CX
POP BX
RET
DISP4 ENDP
DISP2 PROC NEAR
MOV BL,AL
MOV DL,AL
MOV CL,4
ROL DL,CL
AND DL,0FH
CALL DISP1
MOV DL,BL
AND DL,0FH
CALL DISP1
RET
DISP2 ENDP
DISP1 PROC
OR DL,30H
CMP DL,3AH
JB DDD
ADD DL,07H
DDD: MOV AH,2
INT 21H
RET
DISP1 ENDP
CODE ENDS
END START
2、编译显示两位十六进制 0A4H
DATA SEGMENT
M DB 0A4H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,M
CALL DISP2
INT 20H
DISP2 PROC NEAR
MOV BL,AL
MOV DL,AL
MOV CL,4
ROL DL,CL
AND DL,0FH
CALL DISP1
MOV DL,BL
AND DL,0FH
CALL DISP1
RET
DISP2 ENDP
DISP1 PROC
OR DL,30H
CMP DL,3AH
JB DDD
ADD DL,07H
DDD: MOV AH,2
INT 21H
RET
DISP1 ENDP
CODE ENDS
END START
遇到的问题及解决方法:
1、Block nesting error
嵌套出错。嵌套的过程,段,结构,宏指令或重复块等非正常结束.例如在嵌套语句中有外层的结束语句,而无内层的结束语局
解决方法:添加结束语句。
2、Phase error between passes
两次扫描间的遍错。一个标号在二次扫描时得到不同的地址值,就会给出这种错误,一般错在起始终止符不配对,或循环内错误。若在启动MASM时使用/D任选项,产生第一遍扫描的列表文件,它可帮助你查找这种错误