1. 汇编语言,从键盘上输入一串字符串,当输入字符是回车时,显示输入的所有字符
下列程序已经调试通过。
;---------------------------------
DATA SEGMENT
MSG1 DB 13, 10, 'Please input a char : ', 13, 10, 13, 10, '$'
DDD1 DB 13, 10, 13, 10
DDD2 DB 81 DUP ('$')
DATA ENDS
;---------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
;---------------------------------
MOV DX, OFFSET MSG1
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.
MOV DI, OFFSET DDD2
LOP:
MOV AH, 1 ;输入字符.
INT 21H
CMP AL, 13
JZ EXIT ;'回车'结束.
MOV [DI], AL
INC DI
CMP DI, OFFSET DDD2 + 80
JZ EXIT ;输入80个字符了,也结束.
JMP LOP ;继续输入.
;---------------------------------
EXIT:
MOV DX, OFFSET DDD1
MOV AH, 9 ;9号功能调用.
INT 21H ;显示输入的字符.
;---------------------------------
MOV AH, 4CH ;程序结束.
INT 21H
;---------------------------------
CODE ENDS
END START
;---------------------------------
2. 汇编语言编写,从键盘输入一个字符串,删除其中的空格,删除前和删除后的字符串都显示
;消空
codesegment
assumecs:code
org100h
start:
jmpbbb
str1db254p('')
str2db254p('')
numdb?
msg1db10,13,'pleaseinputstring:','$'
lfcrdb10,13,'$'
bbb:
pushcs
popds
leadx,msg1
movah,9
int21h
MOVcx,0
leadi,str1
again1:
movah,1
int21h
cmpal,13
jeline1
movbyteptr[di],al
inccx
incdi
jmpagain1
line1:
;movbyteptr[num],cl
movbyteptr[di+1],'$'
leadx,lfcr
movah,9
int21h
leadx,str1
movah,9
int21h
leasi,str1
leadi,str2
again2:
moval,byteptr[si]
cmpal,''
jeline2
movbyteptr[di],al
incdi
line2:
incsi
loopagain2
movbyteptr[di+1],'$'
leadx,lfcr
movah,9
int21h
leadx,str2
movah,9
int21h
movah,4ch
int21h
codeends
endstart
3. 汇编语言 输入数据错误如何实现退格删除
不知道你端口数据什么意思,是用IN读入数据吗?不知道,下面的程序是两组数据的比较并西显示是不是完全一样,全自己写的,嘻嘻 data segment MAIN db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah;十个数 REDUNDAT db 01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah;十个数 NUMBER equ $-REDUNDAT ;REDUNDAT端口个数,应该和MAIN一样吧 diff db 'not the same',0AH,0DH,'$' ; sam db 'the same',0AH,0DH,'$' ; data ends code segment assume cs:code,ds:data;声明段 start:mov ax,data mov ds,ax;初始化DS mov cx,NUMBER ;个数cx lea di,MAIN lea si,REDUNDAT next:mov al,[si] cmp al,[di] ; jnz nnn inc si inc di loop next ;cx 是否为0 mov ah,09h lea dx,sam ;得到提示信息的偏移地址 int 21h ;显示字符串,以'$'结束 jmp none nnn:mov ah,09h lea dx,diff ;得到提示信息的偏移地址 int 21h ;显示字符串,以'$'结束 none: mov ah,4ch int 21h ;退出DOS code ends end start
4. 为什么用汇编语言编写的键盘输入字符串并显示的程序在输入字符串时会显示错误
调用INT 21H
功能号0AH,把你统计的数据还需要作一个转化(将16进制转化成10进制的ASCII)
5. 我的电脑按键出现错误了,按删除键会出现/ 按a键会自动跑到前面输入 这个是怎么回事儿求高手解决问题
键盘进水或其它杂物了么?有没有受到碰撞什么的?
如不是 则有可能是驱动错误或系统受损,考虑重新安装系统试试。
6. 自己写了个简单的汇编程序:从键盘输入一个字符,再把它输出到显示器上。 结果错了,请问高手们应该怎样改
1.问题
LEA DX,STR2
MOV AH,09H
INT 21H
破坏了AL的值,你白输入了
2.改进
PUSH AX ;保护AX
LEA DX,STR2
MOV AH,09H
INT 21H
POP AX ;恢复版权AX
就行了
7. 汇编语言输出输入的错误
dos功能调用9号功能:显示以ds:dx开始的字符串,当遇到一个$时,结束显示。楼主程序中,
lea si,aa
add si,5
mov byte ptr [si],'$'
把字符串回中第4个字符改为答:$,致使显示前3个字符之后,结束显示,这是导致“只是输出前3个”的症结所在。把这三条指令的后两条删掉即可。
下面,我就从lea si,aa 指令开始,直至显示完整字符串,给出优化的程序段,指令全部用大写字符。
LEA SI,aa
MOV CL,[SI+1]
XOR CH,CH
MOV WORD PTR [SI],0D0AH
ADD SI,CX
INC SI
INC SI
MOV BYTE PTR [SI],'$'
MOV AH,9
INT 21H
8. 键盘输入错误怎么办
解决办法一:使用组合键:Fn+F8,一般来说问题当场解决
解决办法二:在设备管理器版里面直接删除键盘,权然后重新启动
其他情况:电脑输入设备过多。比如说电脑同时插着鼠标、键盘、U盘、手机数据线,出现干扰情况。解决办法:拔下这些输入设备重启电脑就行了。
9. 汇编语言 键盘输入
黑屏是全黑?还是只把A不显示?
后者的话,可以考虑把A的前景色变黑
10. 汇编语言!一个关于键盘输入的问题
输入好像是用DOS21中断做的,
MOV AH, 9
INT 21H