目录 上一页 下一页 下一章

-100- PC机汇编语言实战精解

  继续使用"G"命令在CS:000C处设置断点,同时从键盘输入字符串"ASSEMBLY"并回车。
-g=8 c[Enter]
assembly[Enter]← 键盘输入的字符串
AX=0A0DBX=0000CX=0020DX=0000SP=0000BP=0000SI=0000DI=0000
DS=0E8EES=0E7ESS=0E8ECS=0E8FIP=000C NV UP EI PL NZ NA PO NC
0E8F:000CB44CMOV AH,4C
  现在我们再次观察一下字符串缓冲区,看看有什么变化。
d0:f[Enter]字符串计数值发生变化,说明从键盘输入了8个字符
0E8E:00000A 08 61 73 73 65 6D 62-6C 79 0D 20 00 00 00 00..assembly. ....
键盘输入的字符串
  不难看出字节1是由DOS填写的,这个数字并不包括末尾的回车符;输入的字符串末尾只有回车符,无换行符。
  采用这个功能不仅编程简单,而且DOS还会根据我们给定的字节0的值限制输入字符的数量,同时如果我们输入有错,我们还可以用退格键修改。运行这个程序试一下就能验证这两个特点。
  关于字符串的输出我们以前已经讨论了最简单的方法--调用INT 21H的9号功能。这个功能也有一些缺陷,比如说我们能否用此功能输出这个字符串--"PRICE $1.00"?很明显屏幕上根本看不到"1.00",因为"$"表示字符串结束。
  解决方法不难,自编一段程序逐个输出每个字符即可。请看下例:
OUTSTR.ASM
data

mess
data

code

main



outchar:



segment
assume
db'Price:
ends

segment
assume
proc
mov
mov
mov

mov
cmp
jz

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



cs:code
far
ax,data
ds,ax
bx,offset mess

dl,byte ptr [bx]
dl,0
exit


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





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

;BX寄存器指向字符串首

;取一个字符送入DL寄存器
;是字符串结尾吗?
;是结尾则结束程序

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章