[英]8086 assembly language program to find number of odd and even numbers in an array of 16-bit hexadecimal numbers
[英]Program in 8086 assembly language : program that finds all bigger numbers than a single input number from an input array of numbers
我不知道我是否清楚,但是我需要一个程序来接受我输入的数字(#1),单个输入数字(#2),并且它需要从给定的数字数组中找到大于数字#2的所有数字。 。
.model small
.stack 100
.data
sir db 80 dup('$')
m1 db 'Introduceti sirul:$'
m2 db 13,10,'Introduceti un caracter:$'
m2 db 13,10,'Cel mai mare caracter este: $'
max db 0,'$'
.code
mov ax,@data
mov ds,ax
mov ah,9h
mov dx,offset m1
int 21h
mov bx,0
mov cx,80
mov ah,3fh
mov dx,offset sir
int 21h
mov ah,9h
mov dx,offset m2
int 21h
mov ah,1
int 21h
mov si,offset sir
mov ah,[si]
next: mov al,[si]
cmp al,13
jz sfarsit
cmp al,ah
jle nu
mov ah,al
nu: inc si
jmp next
sfarsit:
mov bl,ah
mov ah,9
mov dx,offset m2
int 21h
mov dl,bl
mov ah,2
int 21h
mov ah,4ch
int 21h
end
当前,您的程序只是在sir的输入数组中找到了最大的数字,即ASCII码(字符代码)。 您根本不需要使用单独的输入! 首先存储以下输入:
mov ah, 01h ; DOS.InputCharacter
int 21h
mov char, al
然后在数组中查找更大的东西。 每个较大的项目都会立即显示。
mov si, offset sir
next:
mov dl, [si]
cmp dl, 13
je sfarsit
cmp dl, char
jbe nu ; Ignore if not bigger
mov ah, 02h ; DOS.DisplayCharacter
int 21h
nu:
inc si
jmp next
sfarsit:
请注意,数组元素是有效字符 ,您应将它们视为无符号数量。 因此,请勿将jle
用于有符号的比较,而jbe
用于无符号的比较。
您将不得不重新考虑何时输出第三条消息。
您是否看到第二条和第三条消息都标记为m2 ? 汇编程序将拒绝此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.