用汇编语言编写程序要求输入一个数当这个数小于0输出-1等于零输出零>0输出1
时间: 2024-05-13 17:20:34 浏览: 109
用汇编语言写的简单程序
以下是用x86汇编语言编写的程序,可以实现输入一个数,如果这个数小于0则输出-1,等于0则输出0,大于0则输出1。
```
section .data
prompt db 'Please enter a number: ', 0
neg_str db '-1', 0
zero_str db '0', 0
pos_str db '1', 0
newline db 0Ah
section .bss
num resd 1
section .text
global _start
_start:
; print prompt
mov eax, 4
mov ebx, 1
mov ecx, prompt
mov edx, len(prompt)
int 0x80
; read input
mov eax, 3
mov ebx, 0
mov ecx, num
mov edx, 4
int 0x80
; convert input to signed int
mov eax, [num]
cmp eax, 0x80000000
jnz .no_neg
neg eax
.no_neg:
; determine output
cmp eax, 0
jl .output_neg
je .output_zero
jg .output_pos
.output_neg:
; print -1
mov eax, 4
mov ebx, 1
mov ecx, neg_str
mov edx, len(neg_str)
int 0x80
jmp .exit
.output_zero:
; print 0
mov eax, 4
mov ebx, 1
mov ecx, zero_str
mov edx, len(zero_str)
int 0x80
jmp .exit
.output_pos:
; print 1
mov eax, 4
mov ebx, 1
mov ecx, pos_str
mov edx, len(pos_str)
int 0x80
jmp .exit
.exit:
; print newline and exit
mov eax, 4
mov ebx, 1
mov ecx, newline
mov edx, 1
int 0x80
mov eax, 1
xor ebx, ebx
int 0x80
len:
; calculate length of null-terminated string
mov eax, 0
.loop:
cmp byte [ecx + eax], 0
je .done
inc eax
jmp .loop
.done:
ret
```
阅读全文