0

我正在尝试使用带有 MIC-1 ASSEMBLER 的 .jas 文件在 iJVM 中创建一个程序,通过键盘输入两个数字并将它们相乘以获得输出 EX: 2*2=4

在下面的代码中,我只是对随机数进行了双向推送,因为当我使用“in”获取输入时,它没有给我输入

当我在没有方法的情况下仅在 main 中 bipush 7 和 bipush 2 时,输出为:EX:输入 x:20 输入 y:2

我得到了 ascii 数字,所以我假设它采用十六进制 0x20 和 0x02 并将其相乘得到 0x40 并输出 ascii 字符

.main
.var
x
y
sum
.end-var
    BIPUSH  7
    ISTORE  x
    BIPUSH  5
    ISTORE  y
    BIPUSH  0x40
    INVOKEVIRTUAL   imul
    out


.end-main

.method imul(x,y)
.var
x
y
temp
sum
.end-var    
    BIPUSH  2
    ISTORE  x
    BIPUSH  20
    ISTORE  y
L1: 
    BIPUSH  0
    ISTORE  sum
    GOTO    L2

L2: ILOAD   y
    IFEQ    exit

    POP
    ILOAD   x
    DUP
    IADD
    ISTORE  temp
    GOTO    L3

L3: ILOAD   y
    BIPUSH  2
    ISUB
    ISTORE  y
    GOTO    L4

L4: ILOAD   temp
    ILOAD   sum
    IADD
    ISTORE  sum
    GOTO    L2

exit:   ILOAD   sum
    IRETURN

.end-method
4

0 回答 0