目录 上一页 下一页 下一章

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

-t
AX=0242BX=0103CX=0004DX=1B42SP=0000BP=0000SI=0000DI=0000
DS=0E69ES=0E69SS=0E69CS=0E69IP=0000 NV UP EI PL NZ NA PO NC
0E69:0000CD20INT 20
  事实上,在上面这个程序中完全可以不用LABEL伪指令,而直接采用传统的标号"HEX2ASC:",这并不影响程序的编译和执行。
  除了部分调用之外,过程还可以对其自身进行调用,这就是所谓的递归调用,而这样的过程称为递归过程。采用递归算法往往能编制出效率较高的程序,但要注意一点--待解决的问题要有递归定义。请看这样一个问题:如何将任意字符串按逆序印出?
  问题十分简单,通常的方法是用BX(或其它)寄存器作为指针,指向最后一个字符,而后让指针递减,依次取出每个字符打印出来。下面的程序就是按这种思路编制的:
DISP.ASM
data

mess
data

code

main









loop1:








segment
assume
db'Welcom
ends

segment
assume
proc
mov
mov

mov
mov
int

mov
mov

mov
mov
int
dec
loop

mov
int

ds:data
e to PC world!',0dh,0ah,24h



cs:code
far
ax,data
ds,ax

dx,offset mess
ah,9
21h

cx,22
bx,offset mess+21

dl,byte ptr [bx]
ah,2
21h
bx
loop1

ah,4ch
21h








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


;DX寄存器指向字符串MESS

;显示字符串MESS

;处理22个字符
;BX寄存器指向字符串末尾一个字符

;取得末尾一个字符
;显示这个字符

;BX指向前一个字符
;循环至LOOP1显示前一个字符

;结束进程


Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章