Assembly 用汇编语言计算^2-3b
我在学习一些汇编语言,我发现了一个要解决的问题,Assembly 用汇编语言计算^2-3b,assembly,emu8086,Assembly,Emu8086,我在学习一些汇编语言,我发现了一个要解决的问题,a^2-3b,其中a>=0和b …要解决的问题a^2-3b其中a>=0和b=0和b要计算一个数字的平方,请使用imul或mul指令,具体取决于该数字是否有签名。感谢您的评论,该数字已在i上签名guess@MDNasirulIslam:“其中a>=0”表示a无符号。@fuz:cwd在imul或mul之前不需要(i)mul ax始终计算ax次ax,dx寄存器不用作源。@ecm您当然是对的。不知道我为什么把它放进去。一定是一大早。非常感谢你的回答:)真的
a^2-3b
,其中a>=0和b
…要解决的问题
a^2-3b
其中a>=0
和b=0
和b要计算一个数字的平方,请使用imul
或mul
指令,具体取决于该数字是否有签名。感谢您的评论,该数字已在i上签名guess@MDNasirulIslam:“其中a>=0”表示a
无符号。@fuz:cwd
在imul
或mul
之前不需要(i)mul ax
始终计算ax
次ax
,dx
寄存器不用作源。@ecm您当然是对的。不知道我为什么把它放进去。一定是一大早。非常感谢你的回答:)真的帮了大忙
mov bl 3b
mov cl a
sub cl, bl
mov dl
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
mov ax, 3
mov bx, [b]
imul bx ; -> DX:AX is 3b == [-98301,300]
mov bx, ax
mov cx, dx ; -> CX:BX is 3b == [-98301,300]
mov ax, [a]
imul ax ; -> DX:AX is a^2 == [0,1073676289]
sub ax, bx
sbb dx, cx ; -> DX:AX is a^2-3b == [-300,1073774590]
mov ax, 3
mov bx, [b]
mul bx ; -> DX:AX is 3b == [0,300]
mov bx, ax
mov cx, dx ; -> CX:BX is 3b == [0,300]
mov ax, [a]
mul ax ; -> DX:AX is a^2 == [0,4294836225]
sub ax, bx
sbb dx, cx ; -> DX:AX is a^2-3b == [-300,4294836225]
jb Overflow ; (*)