教材ibm pc示例程序F8-2程序报错
报错内容:(50) illegal instruction: MOVZX BX,ACTULEN or wrong parameters.
报错部分代码: MOVZX BX,ACTULEN;用07H替换0DH
试过将MOVZX改为MOV仍然报错
求大佬指点解决办法!!!
所用的编译器:emu8086 version 4.08
完整程序代码如下:
.MODEL SMALL
.STACK 64
.DATA
PARLIST LABEL BYTE;名字的参数表
MAXNLEN DB 20;名字的最大长度
ACTULEN DB 10 DUP(0);输入的字符数
KBNAME DB 21 DUP('');存入名字
PROMPT DB 'Name?','$'
;
.CODE
;.386;为MOVZX指令指定处理器
A10MAIN PROC FAR
MOV AX,@DATA;初始化段寄存器
MOV DS,AX
MOV ES,AX
CALL Q10CLEAR;清屏
A20:
MOV DX,0000;设置光标为00,00
CALL Q20CURSOR
CALL B10INPUT;用于输入名字
CALL Q10CLEAR;清屏
CMP ACTULEN,00;输入名字?
JE A30;否,则退出
CALL C10CENTER;设置响铃和'$'
CALL D10DISPLY;并在中央显示名字
JMP A20;重复
A30:
MOV AX,4C00H;处理结束
INT 21H
A10MAIN ENDP
;显示提示符并接收输入的名字:
;---------------------------
B10INPUT PROC NEAR
PUSH AX;保存要使用的
PUSH DX;寄存器
MOV AH,09H;请求显示用户提示符
LEA DX,PROMPT
INT 21H
MOV AH,0AH;请求键盘输入
LEA DX,PARLIST
INT 21H
POP DX;恢复寄存器
POP AX
RET
B10INPUT ENDP
;设置响铃符和'$'定界符
;在屏幕中央设置光标:
;----------------------
C10CENTER PROC NEAR;使用BX和DX
MOVZX BX,ACTULEN;用07H替换0DH **//此处报错**
MOV KBNAME[BX],07
MOV KBNAME[BX+1],'$';设置显示界定符
MOV DL,ACTULEN;定位中心位置的列
SHR DL,1;长度除2
NEG DL
ADD DL,40
MOV DH,12
CALL Q20CURSOR
C10CENTER ENDP
;显示中心位置的名字:
;-------------------
D10DISPLY PROC NEAR;使用AH和DX
MOV AH,09H
LEA DX,KBNAME;显示名字
INT 21H
RET
D10DISPLY ENDP
;清屏并设置属性:
;---------------
Q10CLEAR PROC NEAR
PUSHA;保存通用寄存器
MOV AX,0600H;请求卷屏
MOV BH,30;彩色属性
MOV CX,0000;从00,00
MOV DX,184FH;到24,79
POPA;恢复通用寄存器
INT 10H
RET
Q10CLEAR ENDP
;设置光标的行列:
;---------------
;DX已输入数据
Q20CURSOR PROC NEAR;使用AH和BH
MOV AH,02H;请求设置光标
MOV BH,00;页号0
INT 10H
RET
Q20CURSOR ENDP
END A10MAIN