汇编语言写比大小
时间: 2023-07-07 16:06:51 浏览: 50
下面是用汇编语言写的比大小程序示例,可以比较两个数的大小并输出结果:
```
section .data
num1 db 10
num2 db 20
msg1 db 'Num1 is greater',0
msg2 db 'Num2 is greater',0
msg3 db 'Both are equal',0
section .text
global _start
_start:
mov al, [num1] ; load num1 into al register
mov bl, [num2] ; load num2 into bl register
cmp al, bl ; compare the values in al and bl
je equal ; jump to equal if they are equal
jle num2greater ; jump to num2greater if num2 is greater or equal
jmp num1greater ; jump to num1greater if num1 is greater
num1greater:
mov eax, 4 ; system call for printing
mov ebx, 1 ; file descriptor for stdout
mov ecx, msg1 ; message to be printed
mov edx, 14 ; message length
int 0x80 ; call kernel
jmp exit ; jump to exit
num2greater:
mov eax, 4 ; system call for printing
mov ebx, 1 ; file descriptor for stdout
mov ecx, msg2 ; message to be printed
mov edx, 14 ; message length
int 0x80 ; call kernel
jmp exit ; jump to exit
equal:
mov eax, 4 ; system call for printing
mov ebx, 1 ; file descriptor for stdout
mov ecx, msg3 ; message to be printed
mov edx, 13 ; message length
int 0x80 ; call kernel
exit:
mov eax, 1 ; system call for exit
xor ebx, ebx ; exit status
int 0x80 ; call kernel
```
这个程序首先定义了两个数字num1和num2,以及三个字符串消息msg1,msg2和msg3,分别表示num1大于num2、num2大于num1和两个数字相等。
在主程序中,首先将num1和num2的值加载到寄存器al和bl中,然后使用cmp指令比较它们的大小。如果它们相等,就跳转到equal标签,否则比较结果决定跳到num1greater或num2greater标签。
在num1greater标签中,程序将msg1字符串输出到控制台,然后跳转到exit标签,退出程序。在num2greater标签中,程序将msg2字符串输出到控制台,然后跳转到exit标签,退出程序。在equal标签中,程序将msg3字符串输出到控制台,然后跳转到exit标签,退出程序。
最后,exit标签使用系统调用exit退出程序。