|
|
#4
zhenglc122010-12-06 15:48
DATAS SEGMENT
;此处输入数据段代码
STR1 DB 'Please input a character string :',0dh,0ah,'$'
str10 db ' $'
BUF DB 20 ;这里的20为指定存放字符的个数(理论上的)
DB ? ;这的?可变,实际存放字符的个数(系统自动计算)
DB 20 DUP (?) ;这里的20是你在数据段开辟的空间
CRLF DB 0AH,0DH,"$";此处输入数据段代码 ;回车换行
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
LEA DX,STR1 ;9号中断前提,给参数DX赋值,指定输出字符串所在的有效地址
MOV AH,9
INT 21H
MOV AH,10 ;10号中断,接收输入字符串,此时DX为存放字符串的有效地址
LEA DX,BUF
INT 21H
LEA DX,CRLF
MOV AH,9
INT 21H
mov ah,0
mov al,2
int 10h;黑白文本
mov dl,0 ;字符串向右移动
bbb2:
MOV SI,OFFSET buf
mov di,0
bbb1:
mov dh,7 ;dh hang dl lie
inc dl
mov ah,2
int 10h ;置光标位置
mov ah,09 ;9号功能
inc di
mov al,[si]
inc si
mov bh,0 ;显示页
mov bl,0eh ;color
mov cx,01 ;字符重复一次
int 10h
cmp di,0fh
jb bbb1
call delay1
sub dl,0fh
MOV SI,OFFSET str10
mov di,0
ccc1:
mov dh,7 ;dh hang dl lie
inc dl
mov ah,2
int 10h ;置光标位置
mov ah,09 ;9号功能
inc di
mov al,[si]
inc si
mov bh,0 ;显示页
mov bl,0eh ;color
mov cx,01 ;字符重复一次
int 10h
cmp di,0fh
jb ccc1
call delay2
sub dl,0dh
jmp bbb2
delay1 proc near
push cx
push bx
mov bx,1fffh
wait4: mov cx,0ffffh
wait5: loop wait5
dec bx
jnz wait4
pop bx
pop cx
ret
delay1 endp
delay2 proc near
push cx
push bx
mov bx,0ffh
wait2: mov cx,0ffffh
wait3: loop wait3
dec bx
jnz wait2
pop bx
pop cx
ret
delay2 endp ;字符串向右移动结束
MOV AH,4CH
INT 21H
CODES ENDS
END START
|