微机原理汇编语言教材示例程序错误

教材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 

1个回答

MOVZX可能8086不支持,你用bochs运行,模拟一个80386 cpu试试看。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问