汇编输入字符串

NAME INPUT
DATA SEGMENT
	 STR DB 'PLEASE INPUT A STRING:$'
	 BUF DB 20                  ;定义了BUF的长度,最多容纳20-2=18个字符
	 DB ?                       ;纪录输入字符后,实际读入的字符数
	 DB 20 DUP(?)               ;存放输入的字符,每个字符占一字节,这里保留了20个字节的内存空间
	 CRLF DB 0AH,0DH,'$'        ;0AH换行符 0DH回车符 $字符串的结束符(不占内存)
DATA ENDS
STACKS SEGMENT STACK
	 DB 200 DUP(?)
STACKS ENDS
CODE SEGMENT
	 ASSUME CS:CODE,DS:DATA,SS:STACKS
START:
	 MOV AX,DATA
	 MOV DS,AX
	 
	 LEA DX,STR
	 MOV AH,9
	 INT 21H
	 
	 LEA DX,BUF
	 MOV AH,10
	 INT 21H
	 
	 LEA DX,CRLF
	 MOV AH,9
	 INT 21H
	 
	 MOV CL,BUF+1
	 LEA SI,BUF+2
NEXT:
	 MOV DL,[SI]
	 MOV AH,2
	 INT 21H
	 INC SI
	 DEC CL
	 JNZ NEXT
	 
	 MOV AH,4CH
	 INT 21H
CODE ENDS
	 END START




                
汇编语言中,输入字符串的大小写可以通过以下方式实现: 1. 读取字符串: 在汇编语言中,我们可以使用 INT 21H 功能号为 0AH 的 DOS 中断来读取字符串。读取到的字符串会被存储到指定的内存空间中。 例如,下面的代码段演示了如何使用 INT 21H 功能号为 0AH 的 DOS 中断来读取一个字符串,并将其存储在 DS:DX 指向的内存空间中。 ``` MOV AH, 0AH MOV DX, OFFSET buffer INT 21H ``` 其中,buffer 是一个存储字符串的内存空间,需要在代码中定义。 2. 大小写转换: 在汇编语言中,字符的大小写可以通过 ASCII 码进行转换。具体来说,将小写字符转换为大写字符,可以将字符的 ASCII 码加上一个固定的值(通常是 20H)。将大写字符转换为小写字符,则需要将字符的 ASCII 码减去这个固定的值。 例如,下面的代码段演示了如何将一个字符串中所有字符转换为大写字符: ``` MOV SI, OFFSET buffer MOV CL, BYTE PTR [SI] ; 获取字符串的长度 INC SI ; 跳过长度字节 LOOP_START: CMP BYTE PTR [SI], 0 ; 判断是否到达字符串末尾 JE LOOP_END CMP BYTE PTR [SI], 'a' JB NEXT CMP BYTE PTR [SI], 'z' JA NEXT SUB BYTE PTR [SI], 20H ; 转换为大写字母 NEXT: INC SI LOOP LOOP_START LOOP_END: ``` 其中,buffer 是存储字符串的内存空间,需要在代码中定义。代码中使用了循环来遍历字符串中的每个字符,并判断其是否为小写字母。如果是小写字母,则将其 ASCII 码减去 20H,即可将其转换为大写字母。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值