STACKS SEGMENT STACK
DW 100 DUP(?)
TOP LABEL WORD
STACKS ENDS
DATAS SEGMENT
NUM1 DW 9,9,8,7,4,5,6,7,8,9
NUM2 DW 6,4,5,6,7,8,9 ;定义两个数字,首位存放num的长度,这两个数字将用于做乘法运算
S DW 300H DUP(0) ;s用于存放结果
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
MOV AX,DATAS
MOV DS,AX
LEA SI,NUM1
LEA DI,NUM2
LEA BX,S
ADD SI,2
ADD DI,2 ;加2的原因是因为第一位是数字的个数,从第二个数字开始才是真正的数,因为是DW的所以需要+2
MOV CX,NUM1
JIN1: PUSH [SI]
ADD SI,2
LOOP JIN1
LEA SI,NUM1
ADD SI,2
MOV CX,NUM1
CHU1: POP [SI]
ADD SI,2
LOOP CHU1 ;进栈出栈的目的是为了倒置该字符串用于乘法运算
MOV CX,NUM2
JIN2: PUSH [DI]
ADD DI,2
【汇编程序】两个长整数相乘
最新推荐文章于 2024-04-13 18:51:08 发布