汇编语言子程序(Lcm),求两数最小公倍数,调用Lcm子程序求无符号数dvar1、dvar2的最小公倍数并输出。 例:Lcm(12,18)=36
时间: 2023-06-12 13:02:53 浏览: 54
以下是 x86 汇编语言的实现,使用的是欧几里得算法:
```
; 子程序:求两数最大公因数
; 输入:ax, bx
; 输出:ax(存储最大公因数)
Gcd PROC
push bx
mov cx, 0
L1:
mov dx, 0
div bx
cmp dx, 0
je L2
xchg ax, bx
jmp L1
L2:
mov ax, bx
pop bx
ret
Gcd ENDP
; 子程序:求两数最小公倍数
; 输入:ax, bx
; 输出:ax(存储最小公倍数)
Lcm PROC
push bx
push ax
call Gcd
mov bx, ax
pop ax
mul bx
pop bx
ret
Lcm ENDP
; 主程序
ASSUME cs:CODE, ds:DATA
CODE SEGMENT
; 初始化变量
mov ax, 12
mov bx, 18
; 调用 Lcm 子程序
call Lcm
; 输出结果
mov dx, ax
mov ah, 9
int 21h
; 程序结束
mov ah, 4ch
int 21h
CODE ENDS
DATA SEGMENT
; 变量定义
DATA ENDS
END
```
这段代码首先定义了两个子程序 `Gcd` 和 `Lcm`,分别用于求最大公因数和最小公倍数。主程序通过调用 `Lcm` 子程序来求解两个数的最小公倍数,并将结果输出。