汇编语言 输入字符串并输出所有非字母字符的前后导字符

1.输入字符串用10号中断,对缓冲区有格式规定,第一位未缓冲区大小,第二位保留,输入后储存字符串长度,从第三位开始是字符串。

2. 遍历字符串,按照A,Z,a,z的顺序依次CMP当前字符,按逻辑判断是不是非字母字符,如果是,转输出部分。

3.通过判断CX当前值,来判断该字符是不是第一个或最后一个字符,这两种情况输出要特别处理。

DATA SEGMENT
    BUF DB 20,?,20 DUP(?)
    CRLF DB 0AH,0DH,'$'
DATA ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    MOV DX,OFFSET BUF
    MOV AH,0AH
    INT 21H
    MOV DX,OFFSET CRLF
    MOV AH,09H
    INT 21H
    MOV CL,BUF+1
    LEA BX,BUF+2
A0:	MOV AL,[BX]
	CMP AL,'A'
	JB OUTPUT
	CMP AL,'Z'
	JB NEXT
	CMP AL,'a'
	JB OUTPUT
	CMP AL,'z'
	JB NEXT
	JB OUTPUT
NEXT:
	INC BX
    LOOP A0
OUTPUT:
	AND CX,CX
	JZ 	OVER
	MOV AL,BUF+1
	AND AX,00FFH
	CMP CX,AX
	JZ	CUR 
PRE:MOV DL,[BX-1]
	MOV AH,02H
	INT 21H
CUR:MOV DL,[BX]
	MOV AH,02H
	INT 21H
	CMP CX,1
	JZ	RTN
LAT:MOV DL,[BX+1]
	MOV AH,02H
	INT 21H
RTN:MOV DL,' '
	MOV AH,02H
	INT 21H
	JMP NEXT
OVER:
	MOV AH,4CH
	INT 21H
CODES ENDS
    END START


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值