【发布时间】:2020-09-25 09:41:44
【问题描述】:
我正在研究一些汇编语言,我发现了一个要解决的问题 a^2-3b 其中 a>=0 和 b
我最初的算法是
mov bl 3b
mov cl a
sub cl, bl
mov dl
这是我能做到的。我坚持使用 c 的 ascii 代码以及为 a 和 b 输入的任何数字。我也无法得到 a^2 的东西。所以代码是这样的
INCLUDE 'EMU8086.INC'
.MODEL SMALL
.STACK 100H
.DATA
MSG DB "ENTER 1ST DECIMAL NUMBER: ", 0
.CODE
MOV AX, @DATA
MOV DS, AX
LEA SI, MSG
CALL PRINT_STRING
CALL SCAN_NUM ;CX
MOV AX,CX ;1ST INPUT IN AX
CALL PTHIS
DB 0AH, 0DH, "ENTER 2ND DECIMAL NUMBER: ", 0
CALL SCAN_NUM ;2ND INPUT IN CX
SUB AX, CX
CALL PTHIS
DB 0AH, 0DH, 0
;MOV AX, CX
CALL PRINT_NUM ;AX
EXIT:
MOV AH, 4CH
INT 21H
;.............DEFINE PROCEDURES..........;
DEFINE_PRINT_STRING
DEFINE_PTHIS
DEFINE_GET_STRING
DEFINE_CLEAR_SCREEN
DEFINE_SCAN_NUM
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
谁能告诉我如何得到 a^2 的平方,或者任何人都可以通过简单地告诉 a^2-3b 的方程来解决它?
提前致谢。
【问题讨论】:
-
要计算数字的平方,根据数字是否有符号使用
imul或mul指令。 -
感谢您的评论,我猜这个号码已经被烧掉了
-
@MDNasirulIslam:“其中 a>=0”意味着
a未签名。 -
@fuz: 在
imul或mul之前不需要cwd。(i)mul ax总是计算ax次ax,dx寄存器不用作源。 -
@ecm 你当然是对的。不知道我为什么把它放进去。一定是一大早。