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

1.实验要求:(1)本实验要求从键盘上键入10个字符,然后以与键入字符先后相反的顺序将字符显示出来。求汇编语言的代码,拜托不要从网上搜,我都看过了。。。。。。。。最好解释... 1. 实验要求:
(1) 本实验要求从键盘上键入10个字符,然后以与键入字符先后相反的顺序将字符显示出来。
求汇编语言的代码,拜托不要从网上搜,我都看过了。。。。。。。。
最好解释一下
是很新鲜,但和课件上的一模一样。
展开
 我来答
百度网友9045b38
推荐于2017-12-16 · TA获得超过1972个赞
知道小有建树答主
回答量:984
采纳率:90%
帮助的人:526万
展开全部
;呵呵,如此高分,也来凑热闹。
;运行示范如下
;C:\R
;HXGSFHSDG736RU3GRH32867VF847TBF47EHF78CGY4RCY4M8CEW7YDNRG

;GRNDY7WEC8M4YCR4YGC87FHE74FBT748FV76823HRG3UR637GDSHFSGXH
;C:\
;用MASM5.0编译通过

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
娃哈哈AB钙奶
2010-11-12 · TA获得超过246个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:134万
展开全部
;测试过了 一下程序可以,有什么问题可以问我 此刻在线

assume cs:code,ds:data

data segment
buff db 11 ;缓存空间大小
db ? ;输入字符数,电脑自动填入
db 11 dup(?) ;存放键盘输入字符的空间
sort db 10 dup(?),'$' ;开辟一段空间,放逆转的字符
data ends

code segment
start:
mov ax,data
mov ds,ax
mov dx,0
mov ah,0ah
int 21h

mov cx,10 ;10个字符,故要10次循环
mov si,11 ;最后一个字符的偏移地址
mov di,13 ;放逆转字符空间开始偏移地址,这里要注意,因为输入字符回车会占一个字符所以不是12而是13

;这个循环是把输入的字符逆转放到sort空间
s:
mov ah,ds:[si]
mov ds:[di],ah
dec si
inc di
loop s

mov dx,offset sort ;显示字符功能
mov ah,09
int 21h

mov ax,4c00h
int 21h

code ends
end start

应你的要求 修改了下程序 输入任意多个字符都可以

assume cs:code,ds:data

data segment
buff db 100 ;缓存空间大小
db ? ;输入字符数,电脑自动填入
db 100 dup(?) ;存放键盘输入字符的空间
sort db 100 dup(?) ;开辟一段空间,放逆转的字符
data ends

code segment
start:
mov ax,data
mov ds,ax
mov dx,0
mov ah,0ah
int 21h

mov ch,0
mov cl,ds:[1] ;获取你输入的字符数
mov si,cx
add si,1 ;最后一个字符的偏移地址
mov di,offset sort ;放逆转字符空间开始偏移地址

;这个循环是把输入的字符逆转放到sort空间
s:
mov ah,ds:[si]
mov ds:[di],ah
dec si
inc di
loop s
mov byte ptr ds:[di],'$'

mov dx,offset sort ;显示字符功能
mov ah,09
int 21h

mov ax,4c00h
int 21h

code ends

end start
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a018979
2010-11-12 · 超过16用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:43.8万
展开全部
任意输入一个字符串,将该串倒序后在屏幕上显示
DATA SEGMENT
BUF1 DB 20
DB ?
DB 20 DUP(?)
BUF3 DB 13,10
BUF2 DB 20 DUP(?)
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE ,ES:DATA,DS:DATA

MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX

CALL INPUT
CALL COUNT /调用子函数
CALL REVERT
CALL OUTPUT
MOV AX,4C00H
INT 21H
MAIN ENDP

INPUT PROC
MOV DX,OFFSET BUF1
MOV AH,0AH
INT 21H
RET
INPUT ENDP /输入字符串

COUNT PROC
MOV CX,0FFFFH
LEA SI,BUF1+2
AGAIN: CMP BYTE PTR [SI],0DH
JZ TO
INC SI
LOOP AGAIN
TO: NOT CX
RET
COUNT ENDP /判断是否输入完,enter表示输入结束,输入完则对cx取非,所得的值是输入字符的个数/
REVERT PROC
DEC CX
LEA SI,BUF1+2
ADD SI,CX /使si指向输入字符串的最后一个字符的地址
LEA DI,BUF2
INC CX
AGAIN1:STD /方向标志设为1,减量修改地址
LODSB /将位于ds段有si所指的存储单元放入al中
CLD /方向标志设为0,增量修改地址
STOSB /将al中的数据存到es段由di寄存器所指的内存单元
LOOP AGAIN1
MOV BYTE PTR [DI],'$'
RET
REVERT ENDP

OUTPUT PROC
LEA DX,BUF3
MOV AH,9
INT 21H
RET
OUTPUT ENDP /输出倒序后的字符串

CODE ENDS
END MAIN
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
283006053
2010-11-14
知道答主
回答量:10
采纳率:0%
帮助的人:11.7万
展开全部
你自己看下。。
DATA SEGMENT
INFO1 DB 0DH,0AH,‘INPUT STRING:$’
INFO2 DB 0DH,0AH,‘OUTPUT STRING:$’
BUFA DB 81
DB ?
DB 81 DUP(0)
BUFB DB 81 DUP(0)
DATA ENDS
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,INFO1
MOV AH,9 ;9号调用,显示输入提示信息
INT 21H
LEA DX,BUFA
MOV AH,10 ;10号调用,键盘输入字符串到缓冲区BUFA
INT 21H
LEA SI,BUFA+1 BUFA+1中存放的是输入字符的长度
MOV CH,0 ; 取字符长度→CX
MOV CL,[SI]
ADD SI,CX ;SI 指向字符串尾部
LEA DI,BUFB ;DI指向字符串变量BUFB
NEXT: MOV AL,[SI]
MOV [DI],AL
DEC SI 将BUFA中字符反向存入BUFB中
INC DI
LOOP NEXT
MOV BYTE PTR [DI],‘$’;BUFB中加入字符串结束符’$’
LEA DX,INFO2
MOV AH,9 ;9号调用,显示输出提示信息
INT 21H
LEA DX,BUFB
MOV AH,9 ;反向显示字符串
INT 21H
MOV AH,4CH
INT 21H
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
music547up
2010-11-12
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
DATA SEGMENT
BUF DB 10 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DS,AX
MOV CX,10
MOV SI,OFFSET BUF
READ: MOV AH,01H
INT 21H
MOV [SI],AL
INC SI
LOOP READ
MOV CX,10
DISP: MOV DL,[SI]
MOV AH,02H
INT 21H
DEC SI
LOOP DISP
MOV AH ,4CH
INT 21H
CODE ENDS
END START

新鲜打出来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式