![]() | 第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 |