8086汇编输入一个整数,判断其奇偶性(输入范围:-32768~32767,含提示信息)

Posted u25th_engineer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8086汇编输入一个整数,判断其奇偶性(输入范围:-32768~32767,含提示信息)相关的知识,希望对你有一定的参考价值。


图 1 程序运行示意(3位整数、负数)


图 2 程序运行示意(4位正数、负数)


图 3 程序运行示意(边界数据)

stack   segment stack
        db 512 dup(?)
stack   ends
    
data    segment
		string0 db "Enter a decimal number(-32768~32767)", 0ah, 0dh, '$'
        string1 db "Press any key to continue!", 0ah, 0dh, '$'
		string2 db " is odd.", 0ah, 0dh, '$'
		string3 db " is even.", 0ah, 0dh, '$'
		;value	dw 10
data    ends
		
code 	segment
        assume ds: data, cs: code, ss: stack
main:
		mov ax, stack
        mov ss, ax
		mov ax, data
        mov ds, ax
		;mov ax, value
		;push ax
		;call	far ptr judge
		lea dx, string0
		mov ah, 09h
		int 21h
		push ax
		call	far ptr readsiw
		;push ax
		;call	far ptr dispsiw
		mov bx, ax
		push bx ;
		push ax
		call	far ptr judge
		cmp ax, 1
		je is_odd
		jmp is_even
		
is_odd:
		pop bx ;
		mov ax, bx ;
		push ax
		call	far ptr dispsiw
		lea dx, string2
		mov ah, 09h
		int 21h
		jmp almost
		
is_even:
		pop bx ;
		mov ax, bx ;
		push ax
		call	far ptr dispsiw
		lea dx, string3
		mov ah, 09h
		int 21h	
		jmp almost

judge	proc	far
		push	bp
		mov	bp,sp
		mov	ax,word ptr [bp+6]
		and	ax,1
		jmp	short judge_done
judge_done:
		pop	bp
		ret	
judge	endp

readsiw proc far
		push bx
		push cx
		push dx
		xor bx, bx   
		xor cx, cx   
		mov ah, 1
		int 21h
		cmp al, '+'
		jz rsiw1
		cmp al, '-'
		jnz rsiw2
		mov cx, -1
rsiw1: 
		mov ah,  1
		int 21h
rsiw2:    
		cmp al, '0'
		jb rsiw3
		cmp al, '9'
		ja rsiw3
		sub al, 30h
		xor ah, ah
		shl bx, 1
		mov dx, bx
		shl bx, 1
		shl bx, 1
		add bx, dx
		add bx, ax
		jmp rsiw1
rsiw3:
		cmp cx, 0
		jz rsiw4
		neg bx
rsiw4:
		mov ax, bx
		pop dx
		pop cx
		pop bx
		ret
readsiw endp

dispsiw proc far
		push ax
		push bx
		push dx
		test ax, ax 
		jnz dsiw1
		mov dl, '0' 
		mov ah, 2
		int 21h
		jmp dsiw5
dsiw1:
		jns dsiw2  
		mov bx, ax
		mov dl, '-'
		mov ah, 2
		int 21h
		mov ax, bx
		neg ax 
dsiw2:  
		mov bx, 10
		push bx 
dsiw3:
		cmp ax, 0
		jz dsiw4
		xor dx, dx 
		div bx  
		add dl, 30h  
		push dx     
		jmp dsiw3
dsiw4:
		pop dx
		cmp dl, 10
		je dsiw5
		mov ah, 2
		int 21h
		jmp dsiw4
dsiw5:
		pop dx
		pop bx
		pop ax
		ret
dispsiw endp

lineFeed proc far
		push ax
		push dx
		mov dl, 0dh
		mov ah, 2
		int 21h
		mov dl, 0ah
		mov ah, 2
		int 21h
		pop dx
		pop ax
		ret
lineFeed endp

almost:	
		lea dx, string1
		mov ah, 09h
		int 21h
		mov ah, 07h
		int 21h
done:		
		mov ah, 4ch
		int 21h
code	ends
		end main

以上是关于8086汇编输入一个整数,判断其奇偶性(输入范围:-32768~32767,含提示信息)的主要内容,如果未能解决你的问题,请参考以下文章

8086汇编输入一个整数,判断其奇偶性(输入范围:-32768~32767,含提示信息)

8086汇编输入一个整数,判断其是否为素数(质数)(输入范围:2~32767,带提示信息)

8086汇编输入一个整数,判断其是否为素数(质数)(输入范围:2~32767,带提示信息)

8086汇编输入一个整数,判断其是否为素数(质数)(输入范围:2~32767,带提示信息)

8086汇编输入一正整数,统计其位数,输出各个位数及反向输出各个位数(逆序数)(输入范围:1~32767,带提示信息)

8086汇编输入一正整数,统计其位数,输出各个位数及反向输出各个位数(逆序数)(输入范围:1~32767,带提示信息)