
你可以用求十进制的方法来求它
首选你把十六进制化为二进制然后相乘
89BCH=1000,1001,1011,1100B
21H=0010,0001B
1000100110111100
00100001
1000100110111100
1000100110111100
100011100000100111100B=11C13CH
MOV(MOVE)
传送指令P28
PUSH
入栈指令P32
POP
出栈指令P33
XCHG(eXCHanG)
交换指令P34
XLAT(TRANSLATE)
换码指令P34
LEA
(Load
Effective
Address)
有效地址送寄存器指令P35
LDS(Load
DS
with
pointer)
指针送寄存器和DS指令P35
LES(Load
ES
with
pointer)
指针送寄存器和ES指令P35
LAHF(Load
AH
with
Flags)
标志位送AH指令P36
SAHF(Store
AH
into
Flgs)
AH送标志寄存器指令P36
PUSHF(PUSH
the
Flags)
标志进栈指令P36
POPF(POP
the
Flags)
标志出栈指令P37
ADD
加法指令P38
ADC
带进位加法指令P39
INC
加1指令P39
SUB(SUBtract)
不带借位的减法指令P40
SBB(SuVtrach
with
borrow)
带借位的减法指令P40
DEC(DECrement)
减1指领P41
NEG(NEGate)
求补指令P41
CMP(CoMPare)
比较指令P42
MUL(unsinged
MULtiple)
无符号数乘法指令P46
IMUL(sIgned
MUL
tiple)
有符号数乘法指令P46
DIV(unsigned
DIVide)
无符号数除法指令P48
IDIV(sIgned
DIVide)
有符号数除法指令P48
CBW(Count
Byte
to
Word)
字节转换为字指令P50
CWD(Count
Word
to
Doble
word)
字转换为双字指令P50
DAA
压缩的BCD码加法十进制调整指令P53
DAS
压缩的BCD码减法十进制调整指令P53
AAA
非压缩的BCD码加法十进制调整指令P54
AAS
非压缩的BCD码加法十进制调整指令P54
AND
逻辑与指令P54
OR
逻辑或指令P55
XOR
逻辑异或指令P56
NOT
逻辑非指令P56
TEST
测试指令P57
SHL(SHift
logical
Letf)
逻辑左移指令P57
SHR(SHift
logical
Right)
逻辑右移指令P57
汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的 *** 作码,用地址符号(Symbol)或标号(Label)代替指令或 *** 作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
用C语言实现该功能 #include<stdioh> main() {float a,b,c;printf("请输入两个乘数!") scanf("%d%d",&a,&b); c=ab; printf("%dX%d=%d",a,b,c); }
;用汇编语言编一个九九乘法表,主要是要梯形结构,最好写一下简单的流程
;用MASM50编译通过,以下是运行结果
;E:\masm1>9X9
;
;1X1=1
;1X2=2 2X2=4
;1X3=3 2X3=6 3X3=9
;1X4=4 2X4=8 3X4=12 4X4=16
;1X5=5 2X5=10 3X5=15 4X5=20 5X5=25
;1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36
;1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49
;1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64
;1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
;
;
data segment
L DB 31H,'X'
H DB 31H,'='
M1 DB 0
M2 DB 0
DB ' $'
M DB 0 ;乘积
CRLF DB 0DH,0AH,'$'
data ends
code segment
main proc far
assume cs:code,ds:data
start:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
CALL CRLF_P
MOV AL,31H
MOV L,AL
MOV H,AL
NEXT_L:
CALL DISP
MOV AL,H
CMP AL,L
JE NEXT_H
INC L
JMP NEXT_L
NEXT_H:
CALL CRLF_P
INC H
MOV AL,31H
MOV L,AL
MOV AL,H
CMP AL,3AH
JE END9
JMP NEXT_L
END9:
RET
;INT 20H
main endp
;=====================
DISP PROC NEAR
MOV AL,H
MOV BL,L
SUB AL,30H
SUB BL,30H
MUL BL
MOV M,AL ;;乘积
MOV BL,10D
DIV BL
CMP AL,0
JE NO10
ADD AX,3030H
MOV M1,AL
MOV M2,AH
JMP DISP11
NO10:
ADD AH,30H
MOV M1,AH
MOV AL,' '
MOV M2,AL
DISP11:
MOV DX,OFFSET L
MOV AH,09
INT 21H
RET
DISP ENDP
;========================
CRLF_P PROC NEAR
MOV AH,09
MOV DX,OFFSET CRLF
INT 21H
RET
CRLF_P ENDP
code ends
end start
1乘法:
MUL AB ;(A)×(B),积的低8位在A中,积的高8位在B中;
C总为0。
2除法:
DIV AB ;(A)÷(B),商在A中,余数在B中。
若(B)= 0 ,则结果不定,(OV)= 1,(C)= 0。
例、试将A中的二进制数转换为3位BCD码,其中,百位数存放于31H单
元,十位数和个位数压缩后存于30H单元中。
解;MOV B,#100
DIV AB
MOV 31H,A
MOV A,#10
XCH A,B
DIV AB
SWAP A
ADD A,B
MOV 30H,A
code segment
assume cs:code
org 100h
start:
jmp bbb
x db 11h
y db 12h
z dw
msg1 db 13,10,' ','$'
bbb:
push cs
pop ds
push cs
pop es
mov al,x
mov bl,y
mul bl
mov z,ax
lea di,msg1
inc di
inc di
mov cx,4
again1:
mov ax,word ptr[z]
rol ax,1
rol ax,1
rol ax,1
rol ax,1
mov word ptr[z],ax
and ax,000Fh
cmp al,9
jg line1
add al,30h
mov byte ptr[di],al
jmp line2
line1:
add al,37h
mov byte ptr[di],al
line2:
inc di
loop again1
lea dx,msg1
mov ah,9
int 21h
mov ah,8
int 21h
mov ah,4ch
int 21h
code ends
end start
以上就是关于汇编语言中二进制乘除怎么运算全部的内容,包括:汇编语言中二进制乘除怎么运算、汇编语言有符号乘法指令、汇编语言编程:两个数相乘的实验等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)