天启广东互娱:汇编高手请进!急!!!

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 00:04:24
各位:帮我解决一下这几题(任一道也行)谢谢!
1、设数据区有两个字节串,串1的长度为5,串2的长度为10,若串2的最后五个字符和串1相同,刚置地址单元FLAG为“Y”,否则为“N”
2、设在变量单元A1、A2、A3、A4中存放有4个数,试编程实现将最大的数保留,其余3个数清零的功能。
3、若内存BUF开始的单元中存放6个无序数,请用冒泡法将他们按递增顺序排序
4、在内存BUFFER单元中定义有10个16位数,试寻找其中的最大值和最小值,并放至指定单元MAX和MIN中。
5、在BUFF开始的存储区中存放30个带符号数,试统计其正数、负数和零的个数、并将个数分别放到A1、A2和A3单元。
各位大虾帮帮忙啦,我追加分的哦~~~~

第一题:
datarea segment
string2 db '012345s789'
string1 db '56789'
flag db '0'
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea,es:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax
lea di,string1
lea si,string2
add si,5
cld
mov cx,5
repz cmpsb
jz match
mov al,'n'
mov flag,al
jmp exit
match:
mov al,'y'
mov flag,al
exit:
mov dl,al
mov ah,02h
int 21h

ret

main endp
prognam ends
end start
第二题:
datarea segment
A1 db 1
A2 db 2
A3 db 3
A4 db 4
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea,es:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax
lea bx,A1
add bx,1
mov al,A1
mov ah,0
mov cx,3
copar:
cmp al,[bx]
jae done
mov al,[bx]
done:
add bx,1
loop copar
lea bx,A1
mov cx,4
doit:
cmp al,[bx]
je itdone
push ax
mov ax,0
mov [bx],al
pop ax
itdone:
add bx,1
loop doit
mov ah,02h
lea bx,A1
mov cx,4
itdo:
mov dl,[bx]
add dl,30h
int 21h
mov dl,20h
int 21h
add bx,1
loop itdo

ret

main endp
prognam ends
end start