我必须编写一个求解方程的代码(在代码中)y的立方和10 * x ^ 2的值是错误的。也有人可以帮助我如何打印变量ans吗?我目前正在使用emu8086,并即时查看emu选项中每个变量的值。这是我写的代码。我是一个初学者,所以我不想使这段代码复杂化。请建议
.MODEL SMALL
.STACK 100H
.DATA
equation DB "Equation: (10x^2 - 6y^3)*3z + y^3 + z^4",0DH,0AH ,'$'
MSGX DB 0DH,0AH,"ENTER VALUE OF X",0DH,0AH,'$'
MSGY DB 0DH,0AH,"ENTER VALUE OF Y",0DH,0AH,'$'
MSGZ DB 0DH,0AH,"ENTER VALUE OF Z",0DH,0AH,'$'
MSGNO DB "",0DH,0AH,'$'
X DB ?
Y DB ?
Z DB ?
SQUAREX DW ?
CUBEY DW ?
SQUARE10X DW ?
CUBE6Y DW ?
3Z DW ?
ZP4 DW ? ; z powered 4
BRAC1 DW ?
BRAC2 DW ?
ANS DW ?
.CODE
.STARTUP
; INPUT X (10x^2 - 6y^3)*3z + y^3 + z^4
MOV AH,9
MOV DX,OFFSET MSGX
INT 21H
MOV AH,1
INT 21H
MOV X,AL
SUB X,48
MOV AH,9
MOV DX,OFFSET MSGNO
INT 21H
; INPUT Y (10x^2 - 6y^3)*3z + y^3 + z^4
MOV AH,9
MOV DX,OFFSET MSGY
INT 21H
MOV AH,1
INT 21H
MOV Y,AX
SUB Y,48
MOV AH,9
MOV DX,OFFSET MSGNO
INT 21H
; INPUT Z
MOV AH,9
MOV DX,OFFSET MSGZ
INT 21H
MOV AH,1
INT 21H
MOV Z,AL
SUB Z,48
MOV AH,9
MOV DX,OFFSET MSGNO
INT 21H
;ZP4 (10x^2 - 6y^3)*3z + y^3 + z^4
MOV AL, Z
MOV BL,Z
MUL BL
MOV CL,Z
MUL CL
MOV DL,Z
MUL DL
AAM
MOV ZP4,AX
;Y^3
MOV AL,Y
MOV BL,Y
MUL BL
MOV CL,Y
MUL CL
AAM
MOV CUBEY,AX
;6Y^3 (10x^2 - 6y^3)*3z + y^3 + z^4
MOV AX,CUBEY
MOV BL,6
MUL BL
AAM
MOV CUBE6Y,AX
;X^2
MOV AL,X
MOV BL,X
MUL BL
AAM
MOV SQUAREX,AX
;10X^2
MOV AX,SQUAREX
MOV BL,10
MUL BL
AAM
MOV SQUARE10X,AX
;3Z
MOV AL,Z
MOV BL,3
MUL BL
AAM
MOV 3Z,AX
;bracket 1 (10x^2 - 6y^3)
MOV AX,SQUARE10X
SUB AX,CUBE6Y
AAA
MOV BRAC1 ,AX
;bracket 2 (3z + y^3 + z^4)
MOV AX,3Z
ADD AX,CUBEY
ADD AX, ZP4
AAA
MOV BRAC2 ,AX
MOV AX, BRAC1
MUL BRAC2
MOV ANS, AX
.EXIT
END
答案 0 :(得分:2)
您的代码有几个问题
MOV Y,AX
应该是mov Y, al
。幸运的是,这不会显示在结果中AAM
指令(10x^2 - 6y^3)*3z + y^3 + z^4
上添加第二对括号将得到((10x^2 - 6y^3)*3z) + y^3 + z^4
,而不是您(10x^2 - 6y^3)*(3z + y^3 + z^4)
那样。请记住,乘法优先于加法!; ZP4 (10x^2 - 6y^3)*3z + y^3 + z^4
mov al, Z
mul al
mul al
mov ZP4, ax ; Could be as big as 9 x 9 x 9 x 9 == 6561
; Y^3
mov al,Y
mul al
mov bl,Y
mul bl
mov CUBEY, ax ; Could be as big as 9 x 9 x 9 == 729
; 6Y^3
mov ax, CUBEY ; 729 would not fit in AL register!
mov bx, 6
mul bx ; Needs to be word-sized multiplication!
mov CUBE6Y, ax ; Could be as big as 6 x 9 x 9 x 9 == 4374
; X^2
mov al, X
mul al
mov SQUAREX, ax
; 10X^2
mov bl, 10
mul bl
mov SQUARE10X, ax ; Could be as big as 10 x 9 x 9 == 810
; 3Z
mov al, Z
mov bl, 3
mul bl
mov 3Z, ax
; bracket 1 (10x^2 - 6y^3)
mov ax, SQUARE10X
sub ax, CUBE6Y ; This could be a NEGATIVE value!
; bracket 2 ((10x^2 - 6y^3)*3z)
mov bx, 3Z
imul bx
; additions ((10x^2 - 6y^3)*3z) + y^3 + z^4
add ax, CUBEY
add ax, ZP4
mov ANS, ax
有人还能帮我打印变量ans吗?
我已经写了此问题解答Displaying numbers with DOS,详细说明了如何打印答案。