李兆龙的博客 2020-06-02 20:25 采纳率: 75%
浏览 176

这段简单实现switch的汇编代码如何修改?

DATA SEGMENT

    msg1 db 'Monday$'
    msg2 db 'Tuesday$'
    msg3 db 'Wednesday$'
    msg4 db 'Thyrsday$'
    msg5 db 'Friday$'
    msg6 db 'Saturday$'
    msg7 db 'Sunday$'
    msg  db 'input number(1-7):$'

    table dw disp1,disp2,disp3,disp4
          dw disp5,disp6,disp7

DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:

    again:
        MOV DX, msg
        MOV AH, 9       ; 9号系统调用,从DX取数据并输出
        INT 21H

        MOV AH, 01H     ; 1号系统调用,将字符输入到AL中
        INT 21H
        CMP AL, 1
        JB  again
        CMP AL, 7
        JA  again       ; 不在范围内重新输入

        DEC AL
        MOV AX, AL
        MUL AX, 4       ; 相当于乘4, 左移也可
        ;JMP near ptr [table[AX] ; 跳转到相应的的label
        ;MUL AL, 4
        ;MOV AX, dword ptr [table[AL]]
        jmp dword ptr table[AX]

    disp1:
        MOV AX, OFFSET msg1
        jmp disp
    disp2:
        MOV AX, OFFSET msg2
        jmp disp
    disp3:
        MOV AX, OFFSET msg3
        jmp disp
    disp4:
        MOV AX, OFFSET msg4
        jmp disp
    disp5:
        MOV AX, OFFSET msg5
        jmp disp
    disp6:
        MOV AX, OFFSET msg6
        jmp disp
    disp7:
        MOV AX, OFFSET msg7
        jmp disp
    disp:
        MOV DX, AX
        MOV AH, 9
        INT 21H

CODE ENDS
END START

在jmp的地方出现错误, A2048 must be index or base register

是使用Dosbox作为环境的。

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-06-05 15:30
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行