目录 上一页 下一页 下一章

第5章 子程序和串处理 -107-

search:






nextchar:

cmp_next:







out_di:



outloop:














continue:


exit:

cmp
jz
inc
cmp
jnz
jmp

mov

cmp
jz
lodsb
inc
cmp
jz
jmp
mov
sub
mov
mov
rol
rol
rol
rol
push
and
xlat
mov
int
pop
loop
mov
int
mov
int

inc
jmp
mov

al,byte ptr [di]
nextchar
di
byte ptr [di],0
search
exit

bx,di

byte ptr [si],0
out_di

bx
al,byte ptr [bx]
cmp_next
continue
ax,di
ax,offset string
bx,offset ascii
cx,4
ax,1
ax,1
ax,1
ax,1
ax
ax,000fh

ah,0eh
10h
ax
outloop
ax,0e0dh
10h
al,0ah
10h

di
next_str
ah,4ch

;将取到的字符与DI指向的字符进行比较
;若相同则继续比较其余字符
;不相同则DI寄存器指向下一个字符
;DI寄存器已经指向字符串末尾了吗?
;未到末尾,转SEARCH继续比较
;已到末尾,转EXIT结束程序

;BX寄存器取得字符串指针

;已经比完所有字符了吗?
;比完所有字符,转OUT_DI输出DI的值
;取得待查字符串的下一个字母
;BX中的指针加1,指向下一个字符
;比较两个字符
;两字符相同,转CMP_NEXT比下一个字符
;两字符不同,转CONTINUE
;DI寄存器中的指针送入AX寄存器
;计算待查字符串在源串中的偏移位置
;BX寄存器指向ASCII表
;输出4个数位
;AL寄存器循环左移4位



;暂存AX寄存器
;保留AX寄存器的低4位
;取得对应的ASCII码
;利用10H中断的0EH功能
;输出AL寄存器中的字符
;取回AX寄存器
;处理下一个数位
;输出回车符

;输出换行符


;DI寄存器指向下一个字符
;转NEXT_STR继续搜索待查串的首字符
;结束程序

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章