汇编语言 对两个数字排序

利用汇编语言,对130和160两个数由高到低进行排序,并输出到储存器中。尽量能够显示结果。(所附图片与题目无关)

详细代码和每行每段注释如下,望采纳

mov ax, 130  ;将 130 加载到 ax 寄存器
mov bx, 160  ;将 160 加载到 bx 寄存器

cmp ax, bx   ;比较 ax 和 bx 的值
jg swap      ;如果 ax > bx,跳转到 swap 标签

;下面是没有跳转的情况,也就是 ax <= bx
;此时,ax 和 bx 的值已经按照从低到高的顺序排好了
;可以直接输出它们的值

;输出 ax 的值
mov ah, 02h ;设置 ah 寄存器的值,表示输出字符串
mov dl, al   ;将 ax 的低字节复制到 dl 寄存器
int 21h      ;调用 DOS 函数,输出 dl 寄存器的值

;输出 bx 的值
mov dl, bl   ;将 bx 的低字节复制到 dl 寄存器
int 21h      ;调用 DOS 函数,输出 dl 寄存器的值

;程序结束
mov ah, 4ch  ;设置 ah 寄存器的值,表示结束程序
int 21h      ;调用 DOS 函数,结束程序

;下面是跳转到的 swap 标签
swap:
;交换 ax 和 bx 的值
xchg ax, bx

;输出 ax 的值
mov ah, 02h ;设置 ah 寄存器的值,表示输出字符串
mov dl, al   ;将 ax 的低字节复制到 dl 寄存器
int 21h      ;调用 DOS 函数,输出 dl
; 将 130 和 160 存储在寄存器中
mov ax, 130
mov bx, 160

; 对两个数进行比较
cmp ax, bx

; 如果 ax > bx,则交换两个数的值
jg swap

; 输出结果
mov cx, ax
mov dx, bx

; 结束程序
int 20h

; 交换两个数的值
swap:
mov cx, bx
mov dx, ax

; 输出结果
int 20h

https://blog.csdn.net/qq_51574759/article/details/121131810?spm=1001.2014.3001.5501

看看我之前的博客,自己写写,不难的

在汇编语言中,您可以使用比较和交换指令来对两个数进行排序。例如,您可以使用 cmp 指令来比较两个数,然后使用 jg 指令(如果第一个数大于第二个数)或 jl 指令(如果第一个数小于第二个数)来跳转到特定的代码块,并使用交换指令来交换两个数的值。

以下是使用汇编语言对 130 和 160 进行排序的示例代码:

; 使用 eax 和 ebx 寄存器存储 130 和 160
mov eax, 130
mov ebx, 160

; 使用 cmp 指令比较 eax 和 ebx 的值
cmp eax, ebx

; 如果 eax 大于 ebx,则跳转到 swap_numbers 标签
jg swap_numbers

; 否则,打印数字
print_numbers:
    mov edx, eax
    mov ecx, ebx
    call print_int
    jmp done

; 交换 eax 和 ebx 的值
swap_numbers:
    mov ecx, eax
    mov eax, ebx
    mov ebx, ecx
    jmp print_numbers

done:

在上面的代码中,我们使用了 eax 和 ebx 寄存器存储 130 和 160,然后使用 cmp 指令来比较它们的值。如果 eax 大于 ebx,则跳转到 swap_numbers 标签,在这里我们使用了交换指令来交换 eax 和 ebx 的值。否则,我们将跳转到 print_numbers 标签,在这里我们使用了 mov 指令将数字存储在 edx 和 ecx 寄存器中,然后调用 print_int 函数来打印数字。最后,我们使用 jmp 指令跳转到 done 标签,以结束程序。

请注意,上述代码假设您已定义了 print_int 函数,该函数接受两个参数:要打印的数字和该数字的位数。您可以使用不同的方式实现该函数,例如使用格式化字符串或循环来打印每一位。

希望这能帮助您。如果您有其他问题,请随时告诉我。