汇编语言的字符输入输出程序设计

汇编语言的字符输入输出程序设计,第1张

;呵呵,如此高分,也来凑热闹。

;运行示范如下

;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

以上就是关于汇编语言的字符输入/输出程序设计全部的内容,包括:汇编语言的字符输入/输出程序设计、用汇编语言在键盘输入一个字符串,并将其从左向右滚动显示,求完整程序、有汇编语言设计程序 键盘输入输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10073558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存