你可以用求十进制的方法来求它
首选你把十六进制化为二进制然后相乘
89BCH=1000,1001,1011,1100B
21H=0010,0001B
1000100110111100
* 00100001
1000100110111100
1000100110111100
100011100000100111100B=11C13CH
乘法用左移指令SHL,例如寄存器AX的值乘以3
MOV BX,AX
SHL AX,1
ADD AX,BX
乘4
MOV CL,2
SHL AX,2
除法用右移指令SHR
除以2
SHR AX,1
除以2
SHR AX,1
也可以直接用DIV
MOV AX,OPS或 结果放在AL中,余数在AH
MOV DX:AX,OPS 商放在AX中,余数在DX中
DIV 2
如果这种CPU有乘法和除法指令的话,用乘法或除法指令算 -_-!
CPU自带的乘法和除法指令是经过优化的,比自己循环相加或相减的速度快很多
比如8086就有mul和div,分别是乘法和除法指令
如果是没有乘除法的CPU的话,就像上面的那几位说的
汇编语言的乘法就是“加”,如AX*5,就是AX加5次
相类似,除法就是“减”
其实可以通过循环左移,循环右移实现