2403_89164097 2025-12-28 13:17 采纳率: 0%
浏览 3

8086,汇编求公约数

8086汇编,求公约数:
(1)输入两个小于100的十进制正整数
(2)求出这两个数的所有公约数
(3)求出这两个数的平方差,若是负数要输出负号
(4)计算两个数各占和的百分比,并按照“%”的格式输出(小数点后保留两位)
(5)数据的输入和结果的输出要有必要的提示
(6)要用到子程序

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-12-28 13:17
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    • 问题涉及到8086汇编语言的编程
    • 需求包括:
      • 输入两个小于100的十进制正整数
      • 求出这两个数的所有公约数
      • 求出这两个数的平方差
      • 计算两个数各占和的百分比

    解决方案

    由于问题涉及到汇编语言的编程,具体的解决方案将依赖于8086汇编语言的语法和指令集。以下是核心部分的解决方案:

    ; 读入两个整数
    mov ax, 0
    mov bx, 0
    mov cx, 0
    mov dx, 0
    mov ah, 1
    int 21h
    mov bl, al
    mov ah, 1
    int 21h
    mov bh, al
    
    ; 求出公约数
    mov ax, bl
    mov bx, bh
    mov cx, 0
    loop1:
    cmp ax, bx
    jge loop2
    mov dx, 0
    div bx
    cmp dx, 0
    jne loop1
    inc cx
    loop loop1
    loop2:
    mov ah, 2
    mov dl, cx
    int 21h
    
    ; 求出平方差
    mov ax, bl
    sub ax, bh
    jns square_diff
    neg ax
    square_diff:
    mov ah, 2
    mov dl, ax
    int 21h
    
    ; 计算百分比
    mov ax, bl
    add ax, bh
    mov bx, ax
    mov ax, bl
    mov dx, 0
    div bx
    mov cx, 0
    loop3:
    cmp dx, 0
    jne loop4
    inc cx
    loop loop3
    loop4:
    mov ah, 2
    mov dl, cx
    int 21h
    mov ah, 2
    mov dl, 37h
    int 21h
    

    注意

    • 该解决方案假设使用的是DOS环境下的8086汇编语言
    • 该解决方案仅提供了核心部分的解决方案,具体的实现可能需要根据具体的需求进行调整
    • 该解决方案不包括输入输出的具体实现,需要根据具体的需求进行调整
    评论

报告相同问题?

问题事件

  • 修改了问题 12月28日
  • 创建了问题 12月28日