我如何在FASM中的代码中包含减法,乘法和除法?

时间:2016-02-08 05:36:18

标签: fasm

格式MZ 输入CODE:START

SEGMENT dDATA
 NUM1 DB ?
 NUM2 DB ?
 RESULT DB ?
 MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
 MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
 MSG3 DB 10,13,"RESULT OF ADDITION IS : $"

SEGMENT CODE START:

  MOV AX, dDATA
  MOV DS,AX

  LEA DX, [MSG1]
  MOV AH,9
  INT 21H

  MOV AH,1
  INT 21H
  SUB AL,30H
  MOV [NUM1], AL

  LEA DX, [MSG2]
  MOV AH,9
  INT 21H

  MOV AH,1
  INT 21H
  SUB AL,30H
  MOV [NUM2] ,AL

  ADD AL, [NUM1]

  MOV [RESULT], AL

  MOV AH,0
  AAA

  ADD AH,30H
  ADD AL,30H

  MOV BX,AX

  LEA DX, [MSG3]
  MOV AH,9
  INT 21H

  MOV AH,2
  MOV DL,BH
  INT 21H

  MOV AH,2
  MOV DL,BL
  INT 21H

  MOV AH,4CH
  INT 21H

1 个答案:

答案 0 :(得分:0)

https://www.pdf-archive.com/2016/11/25/fasm/

减法:

sub    al,1
  

sub从目标操作数中减去源操作数并替换   目标操作数与结果。如果需要借款,则设定CF.规则   操作数与添加指令相同。

乘法:

mul    bx
  

mul执行操作数和累加器的无符号乘法运算。如果   操作数是一个字节,处理器将它乘以al的内容并返回16位   结果啊和al。如果操作数是一个字,则处理器将其乘以ax的内容并将32位结果返回到dx和ax。如果操作数是双字,则   处理器将它乘以eax的内容并返回edx和中的64位结果   EAX。当结果的上半部分非零时,mul设置CF和OF,否则为   被清除了。

分:

div bx
  

div通过操作数执行累加器的无符号除法。红利   (累加器)是除数(操作数),商和余数的两倍   与除数大小相同。如果除数是字节,则从中获取被除数   ax寄存器,商存储在al中,余数存储在ah中。如果除数是   一句话,股息的上半部分取自dx,股息的下半部分取得   从ax开始,商存储在ax中,余数存储在dx中。如果除数是   双字,股息的上半部分来自edx,股息的下半部分是   取自eax,商存储在eax中,其余商存储在edx中。规则   对于操作数,与mul指令相同。