目录 上一页 下一页 下一章

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

  ② 本功能解释诸如0DH、0AH这样的控制码。
  我想这两个有别于其它功能的特征就可以算是TTY方式的定义吧。它还有其它特性,我们将在下一章中学到。
  通过这个程序我们应该对串处理指令有了一些很初步的认识:
  事实上还有第五点:串处理指令往往有"指令前缀"且和CX寄存器也有密切关系,下面就会讲到这一点。
  解决了字符串的输入与输出,现在来考虑这样一个问题:如何在一个字符串中查找一个给定的字符?下面给出了一般的解决方法:
SEARCH.ASM
data

mess
ascii
errmsg
data
code

main




outchar:








out_cx:


outloop:



segment
assume
db
db
db
ends
segment
assume
proc
mov
mov
mov
mov

mov
cmp
jz
cmp
jz
inc
inc
jmp
mov
mov
mov

rol
rol
rol

ds:data
'Price: $1.00',0dh,0ah,0
'0123456789ABCDEF'
07h,'Character not found!


cs:code
far
ax,data
ds,ax
si,offset mess
cx,0

al,byte ptr [si]
al,'$'
out_cx
al,0
not_fd
cx
si
outchar
ax,cx
bx,offset ascii
cx,4

ax,1
ax,1
ax,1


;定义一个含有'$'的字符串
;十六进制数字对应的ASCII码
',0dh,0ah,'$'




;初始化DS寄存器指向数据段

;SI寄存器指向字符串MESS
;CX寄存器清0,准备计字符数

;取一个字符送入AL寄存器
;是所要找的'$'符吗?
;若是则转OUT_CX输出CX的计数值
;到字符串结尾了吗?
;显示出错信息并退出
;CX寄存器加1
;SI寄存器指向下一个字符
;判断下一个字符
;CX寄存器存入AX寄存器
;BX寄存器指向ASCII表
;处理4个数位

;循环左移4位,高4位移至低4位



Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章