;呵呵,如此高分,也来凑热闹。
;运行示范如下
;C:\R
;HXGSFHSDG736RU3GRH32867VF847TBF47EHF78CGY4RCY4M8CEW7YDNRG
;GRNDY7WEC8M4YCR4YGC87FHE74FBT748FV76823HRG3UR637GDSHFSGXH
;C:\
;用MASM50编译通过
DATA SEGMENT
DB 512 DUP('$') ;定义可输入的字符个数
BUF DB '$'
CRLF DB 0DH,0AH,24H ;回车换行符
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET BUF ;指针指向待显示字符串尾部
AGAIN:
MOV AH,01 ;输入字符
INT 21H
CMP AL,0DH ;是回车吗
JE DISP ;是,转显示
DEC BX ;指针减1
MOV [BX],AL ;存入输入的字符
JMP AGAIN ;继续输入
DISP:
MOV AH,09 ;显示
MOV DX,OFFSET CRLF ;回车换行
INT 21H
MOV DX,BX ;定位待显示字符串首地址
MOV AH,09
INT 21H ;显示
MOV AH,4CH ;DOS返回
INT 21H
CODE ENDS
END START
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 13, 10, 'Please input string: ', 13, 10, '$'
IN_MAX DB 8
IN_N DB
IN_BUF DB 10 DUP()
MSG2 DB 90 DUP('$')
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;---------------------------
LEA DX, MSG1
MOV AH, 9
INT 21H
LEA DX, IN_MAX
MOV AH, 10
INT 21H
CMP IN_N, 0
JZ EXIT
;---------------------------
RIGHT:
MOV SI, 0
MOV DI, 0
MOV BYTE PTR MSG2[BX - 1], ' '
ADD DI, BX
CALL UP_DISP
LEA DX, MSG2
MOV AH, 9
INT 21H
MOV AH, 2
MOV DL, 13
INT 21H
INC BX
CALL DELAY
CMP DI, 80
JNZ RIGHT
;---------------------------
EXIT:
MOV AH, 4CH
INT 21H
;---------------------------
UP_DISP:
MOV CH, 0
MOV CL, IN_N
LP1:
MOV AL, IN_BUF[SI]
MOV MSG2[DI], AL
INC SI
INC DI
CMP DI, 80
JZ EXIT_UP
LOOP LP1
EXIT_UP:
RET
;---------------------------
DELAY:
PUSH CX
PUSH DX
MOV DX, 1000
DL1:
LOOP $
DEC DX
CMP DX, 0
JNZ DL1
POP DX
POP CX
RET
;---------------------------
CODE ENDS
END START
本程序最多能输入255个字符包括回车,输出统计时,第一个数字是数字字符个数,第二个是字母,第三个是其它。
assume cs:code,ds:data
data segment
da1 db 255
da2 db
da3 db 255 dup ()
data ends
stack segment stack
db 256 dup ()
stack ends
code segment
start:
mov ax,data
mov ds,ax
lea dx,da1 ;输入字符串
mov ah,10
int 21h
lea bx,da3 ;统计字符串
xor cx,cx
xor ax,ax
xor dx,dx
mov cl,da2
again:
mov ah,[bx]
if ah >= '0' && ah <= '9' ;数字,al加1
inc al
elseif ah >= 'A' && ah <= 'Z' ;字母,dh加1
inc dh
elseif ah >= 'a' && ah <= 'z'
inc dh
else
inc dl ;其它,dl加1
endif
inc bx
loop again
call putout ;输出数字个数
mov al,dh
call putout ;输出字母个数
mov al,dl
call putout ;输出其它字符个数
mov ax,4c00h
int 21h
putout: ;以16进制形式输出al中的数据
push bx
push dx
xor ah,ah
push ax
mov dl,13 ;换行
mov ah,2
int 21h
mov dl,10
mov ah,2
int 21h
pop ax
mov bl,16
div bl ;使高位与低位分离
if al>9 ;转换成字符
add al,40h
endif
add al,30h
if ah>9
add ah,40h
endif
add ah,30h
mov bl,ah ;保存低位
mov dl,al ;输出高位
mov ah,2
int 21h
mov dl,bl ;输出低位
mov ah,2
int 21h
pop dx
pop bx
ret
code ends
end start
以上就是关于汇编语言的字符输入/输出程序设计全部的内容,包括:汇编语言的字符输入/输出程序设计、用汇编语言在键盘输入一个字符串,并将其从左向右滚动显示,求完整程序、有汇编语言设计程序 键盘输入输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)