回 帖 发 新 帖 刷新版面

主题:小问题

DSEG SEGMENT
     XXX DB 234      ;被乘数
     YYY DB 125      ;乘数
     ZZZ DW ?
DSEG ENDS
CSEG SEGMENT
     ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
      MOV DS,AX
      MOV AL,XXX
      XOR AH,AH
      MOV CL,YYY
      XOR CH,CH
      JCXZ  OK
MULTI:ADD DX,AX
      LOOP MULTI
OK:MOV ZZ,DX
   MOV AH,4CH
   INT 21H
CSEG ENDS 
     END START


这个题目怎么实现相乘的,我实在没看出来,麻烦朋友看下

回复列表 (共2个回复)

沙发

没有使用乘法指令,只是用了加法指令。将被乘数加上乘数的次数。

就是JCXZ  OK这个指令应该放在循环后面
或者直接删掉

板凳

这里有一个xor 这是异或运算即 位 相同的为一 不相同的为零
  JNZY 这是一个关于CX跳转的问题,当CX为零时候,进行跳转,不为零时候继续
  这个题目,实际上是做的加法运算,即让125个234相加
  但是对于这个题目   我们还要想一想,可不可能会溢出,如果溢出我们应该怎么办,  我们就应该用别的方法进行乘法运算,如果结果是》FFFFH  的话你应该怎么计算 
 100*100000的结果
  mov ax,100
  mov bl,100000
  mul bl
   DX存放高位置, AX存放低16位的数

我来回复

您尚未登录,请登录后再回复。点此登录或注册