目录 上一页 下一页 下一章

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






exit:


main
code

jz
mov
int
inc
jmp

mov
int
endp
ends
end
exit
ah,2
21h
bx
outchar

ah,4ch
21h


main
;是结尾则结束程序
;显示这个字符

;BX寄存器指向下一个字符
;处理下一个字符

;结束进程




  在这个程序中我们用"0"作字符串结束标志,用BX寄存器作为指针取得每个字符并用21H中断的2号功能输出。用BX作指针不大方便,若改用"串处理"指令会使程序简化一些,下面是经过修改的程序:
OUTSTR1.ASM
data

mess
data
code

main




outchar:






exit:


main
code

segment
assume
db
ends
segment
assume
proc
mov
mov
cld
mov

lodsb
or
jz
mov
int
jmp

mov
int
endp
ends
end

ds:data
'Price: $1.00',0dh,0ah,0


cs:code
far
ax,data
ds,ax

si,offset mess


al,al
exit
ah,0eh
10h
outchar

ah,4ch
21h


main


;定义一个中间含有'$'的字符串




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

;将方向标志位DF清0
;SI寄存器指向字符串首地址

;取一个字符送入AL寄存器
;AL寄存器是0吗?
;是0则结束程序
;选择10H中断的0EH功能
;显示AL寄存器中的字符
;处理下一个字符

;结束进程




  程序中又出现了一些新的东西,下面我们分别讨论:
  (1)SI--源地址索引寄存器(Source Index)
  我们在前面谈到过这个寄存器,它的主要用途是为"串处理"指令提供"源数据串"的首地址。之所以称它为"源"地址索引寄存器是因为只有那些有"取"数据操作的串指令才引用SI,而其它串指令如"串存"、"串扫描"指令都不使用SI寄存器。那么在这个程序中哪个指令是有"取"数据操作的串指令呢?

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章