简单汇编代码-数据查询

数据查找
内容:TAB开始的字节单元中存放N个无符号数,dat单元存放一个已知数据X,现从TAB中查找是否存在数据X,如果存在,NO单元存放该数据在TAB中的序号,否则NO单元存放0FFH 。
TAB DB X1,……,XN
dat DB x
no DB ?
要求:熟练掌握循环程序设计方法
流程图

include irvine32.inc
.data
tab db 12h,37h,35h,47h,76h,85h,34h,34h,17h,18h,23h,44h,99h
count equ $-tab//以字节为计数单元,计算所有数的个数存到count中
dat db 11h
no db ?//no为未知数
.code
main proc
mov ecx,count
xor esi,esi
xor al,al
xor dl,dl
mov al,dat
lop1:
cmp al,tab[esi]
jz next
inc esi
inc dl
loop lop1
mov no,0ffh
cmp ecx,0
jz next1
next:mov no,dl
next1:movzx eax,no
call writeint
exit
main endp
end main

变形为输入n个字符找出其中符合的字符位置

include irvine32.inc
n=5
.data
tab db n dup(?)
dat db 1h dup(?)
no db ?
.code
main proc
mov ecx,n
xor esi,esi
lop1:
call readint
mov byte ptr tab[esi],al
inc esi
loop lop1
call readint
mov byte ptr dat,al
mov ecx,n
xor esi,esi
xor al,al
xor dl,dl
mov al,dat
lop2:
cmp al,tab[esi]
jz next
inc esi
inc dl
loop lop2
cmp ecx,0
jz next1
next:mov no,dl
next1:movzx eax,no
call writeint
exit
main endp
end main

猜你喜欢

转载自blog.csdn.net/FZUMRWANG/article/details/79916227
今日推荐