mittwyc 2018-11-10 14:17 采纳率: 0%
浏览 1591

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

教材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条回答

  • threenewbee 2018-11-10 15:39
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决