汇编语言编译的输入一段字符用9和10功能反序输出

DATA SEGMENT
BUF DB 255,0,255 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN:
MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV SI,DX;
MOV DI,DX
MOV AH,10
INT 21H


MOV AL,13
MOV AH,2
INT 21H
MOV DL,10
INT 21H


MOV CL,0
MOV CL,[SI+1]
AND  CX,00FFH
ADD SI,2
MOV DI,CX
ADD DI,SI
MOV BYTE PTR[DI+1],'$'
SHR CX,1


LAB:
MOV AL,[SI]
XCHG AL,[DI]
MOV [SI],AL
INC SI
DEC DI
LOOP LAB
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
INT 21H
LEA DX,BUF
ADD DX,2


MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
ENDS CODE
END MAIN
好的,我会尽力回答您的问题。以下是汇编语言实现从键盘输入字符串并反序输出字符,并输出字符个数的示例代码: ``` .DATA input_str DB 80 ; 用于存储输入字符串 output_str DB 80 ; 用于存储反序输出字符串 msg1 DB 'Please input a string:', 0 msg2 DB 'The reversed string is:', 0 msg3 DB 'The length of string is:', 0 newline DB 0DH, 0AH, 0 ; 换行符 .CODE main PROC mov ax, @DATA ; 初始化数据段寄存器 mov ds, ax ; 输出提示信息并获取用户输入字符串 lea dx, msg1 mov ah, 09h int 21h lea dx, input_str mov ah, 0Ah mov dx, offset input_str int 21h ; 获取字符串长度 mov dx, offset input_str + 1 mov cl, [dx] xor ch, ch ; 反序输出字符mov si, offset input_str + 2 add si, cx lea di, output_str mov [di], cl dec si mov cl, [si] mov [di+1], cl dec si reverse: cmp si, offset input_str + 1 jb ended mov cl, [si] mov [di+2], cl dec si add di, 1 jmp reverse ended: mov dx, offset msg2 mov ah, 09h int 21h lea dx, output_str mov ah, 09h int 21h ; 输出字符个数 mov dx, offset newline mov ah, 09h int 21h mov dx, offset msg3 mov ah, 09h int 21h mov ah, 02h mov dl, [input_str + 1] add dl, 30h int 21h mov ah, 4Ch ; 退出程序 int 21h main ENDP ``` 该代码会提示用户输入一个字符串,获取用户输入字符串并存储在 `input_str` 中。然后,它会计算出字符串的长度,并将其存储在 `cl` 中。 接下来,该代码会使用一个循环将字符反序输出,并将反序输出字符串存储在 `output_str` 中。 最后,该代码会输出反序输出字符串并输出输入字符串的长度。 注意:这只是一个示例代码,实际上,汇编语言实现该功能需要考虑很多细节问题,例如:输入字符串超出了缓冲区的大小、输入字符串中包含特殊字符等,都需要特殊处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值