问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编语言:从键盘输入一个字符串,再从键盘输入一个字符,如果在原字符串中有这个字符就把它移到最后,

发布网友 发布时间:2022-04-24 02:44

我来回答

2个回答

热心网友 时间:2023-10-22 17:48

DATAS SEGMENT
IN_X DB 16
IN_N DB ?
IN_B DB 16 DUP('X')
IN_E DB ?
MSG1 DB 'Please input STR (Len = 1~15): ', 13, 10, 36
MSG2 DB 13, 10, 'Please input a char : '
MSG3 DB 13, 10, 36
MSG4 DB 13, 10, 'no word.', 13, 10, 36
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX, DATAS
MOV DS, AX
;-----------------------------------
LEA DX, MSG1
MOV AH, 9
INT 21H

LEA DX, IN_X
MOV AH, 10
INT 21H
CMP BYTE PTR IN_N, 1
JB EXIT

LEA DX, MSG2
MOV AH, 9
INT 21H

MOV AH, 1
INT 21H
MOV IN_E, AL

LEA DX, MSG3
MOV AH, 9
INT 21H
;-------------------------
MOV AL, IN_E
LEA BX, IN_B
MOV CL, IN_N
MOV CH, 0
LP1:
CMP AL, [BX]
JE DISP
INC BX
LOOP LP1
JMP H_NOT
;-------------------------
DISP:
MOV DH, AL
MOV AH, 2
LEA BX, IN_B
MOV CL, IN_N
MOV CH, 0
MOV BP, 0
LP2:
MOV DL, [BX]
INC BX
CMP BP, 0
JNE DISP1
CMP DL, DH
JNE DISP1
MOV BP, 1
JMP NEXT
DISP1:
INT 21H
NEXT:
LOOP LP2
MOV DL, DH
INT 21H
JMP EXIT
;-------------------------
H_NOT:
LEA DX, MSG4
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH
INT 21H
CODES ENDS
END START

可以满足题目要求。

热心网友 时间:2023-10-22 17:48

调试通过,不过只移动字符串中第一个相同的字符。
DATAS SEGMENT
s db 15 p(0),'$'
i db 'input :$'
o db 'output:$'
se db 0dh,0ah,'$'
NO db 'no word!$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

lea dx,i ;提示输入
mov ah,9
int 21h
;输入
lea si,s ;输入字符存放的地址
mov cx,15 ;输入次数
ss1:

mov ah,1 ;输入字符
int 21h

mov [si],al ;如果是保存
inc si

loop ss1

lea dx,se ;回车换行
mov ah,9
int 21h

lea dx,i ;提示输入
mov ah,9
int 21h

mov ah,1 ;输入字符
int 21h
mov bx,ax

lea dx,se ;回车换行
mov ah,9
int 21h

mov ax,bx
mov cx,15 ;查找
lea si,s
ss2:
cmp al,[si]
jnz ss5
dec cx ;找到后排序
ss3:
cmp cx,0
jz ss4
mov al,[si]
xchg al,[si+1]
mov [si],al
inc si

loop ss3
ss4:

lea dx,o ;找到后输出
mov ah,9
int 21h

lea dx,s
mov ah,9
int 21h

jmp ss6

ss5:
inc si
loop ss2

lea dx,NO ;未找到输出NO WORD
mov ah,9
int 21h

ss6:
mov ah,0 ;等待输入
int 16h

MOV AH,4CH
INT 21H
CODES ENDS
END START追问汇编:从键盘输入4位16进制数,然后用10进制数显示出来,要求使用子程序结构。
子程序中要说明入口参数和出口参数。

热心网友 时间:2023-10-22 17:48

DATAS SEGMENT
IN_X DB 16
IN_N DB ?
IN_B DB 16 DUP('X')
IN_E DB ?
MSG1 DB 'Please input STR (Len = 1~15): ', 13, 10, 36
MSG2 DB 13, 10, 'Please input a char : '
MSG3 DB 13, 10, 36
MSG4 DB 13, 10, 'no word.', 13, 10, 36
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX, DATAS
MOV DS, AX
;-----------------------------------
LEA DX, MSG1
MOV AH, 9
INT 21H

LEA DX, IN_X
MOV AH, 10
INT 21H
CMP BYTE PTR IN_N, 1
JB EXIT

LEA DX, MSG2
MOV AH, 9
INT 21H

MOV AH, 1
INT 21H
MOV IN_E, AL

LEA DX, MSG3
MOV AH, 9
INT 21H
;-------------------------
MOV AL, IN_E
LEA BX, IN_B
MOV CL, IN_N
MOV CH, 0
LP1:
CMP AL, [BX]
JE DISP
INC BX
LOOP LP1
JMP H_NOT
;-------------------------
DISP:
MOV DH, AL
MOV AH, 2
LEA BX, IN_B
MOV CL, IN_N
MOV CH, 0
MOV BP, 0
LP2:
MOV DL, [BX]
INC BX
CMP BP, 0
JNE DISP1
CMP DL, DH
JNE DISP1
MOV BP, 1
JMP NEXT
DISP1:
INT 21H
NEXT:
LOOP LP2
MOV DL, DH
INT 21H
JMP EXIT
;-------------------------
H_NOT:
LEA DX, MSG4
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH
INT 21H
CODES ENDS
END START

可以满足题目要求。

热心网友 时间:2023-10-22 17:48

调试通过,不过只移动字符串中第一个相同的字符。
DATAS SEGMENT
s db 15 p(0),'$'
i db 'input :$'
o db 'output:$'
se db 0dh,0ah,'$'
NO db 'no word!$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

lea dx,i ;提示输入
mov ah,9
int 21h
;输入
lea si,s ;输入字符存放的地址
mov cx,15 ;输入次数
ss1:

mov ah,1 ;输入字符
int 21h

mov [si],al ;如果是保存
inc si

loop ss1

lea dx,se ;回车换行
mov ah,9
int 21h

lea dx,i ;提示输入
mov ah,9
int 21h

mov ah,1 ;输入字符
int 21h
mov bx,ax

lea dx,se ;回车换行
mov ah,9
int 21h

mov ax,bx
mov cx,15 ;查找
lea si,s
ss2:
cmp al,[si]
jnz ss5
dec cx ;找到后排序
ss3:
cmp cx,0
jz ss4
mov al,[si]
xchg al,[si+1]
mov [si],al
inc si

loop ss3
ss4:

lea dx,o ;找到后输出
mov ah,9
int 21h

lea dx,s
mov ah,9
int 21h

jmp ss6

ss5:
inc si
loop ss2

lea dx,NO ;未找到输出NO WORD
mov ah,9
int 21h

ss6:
mov ah,0 ;等待输入
int 16h

MOV AH,4CH
INT 21H
CODES ENDS
END START追问汇编:从键盘输入4位16进制数,然后用10进制数显示出来,要求使用子程序结构。
子程序中要说明入口参数和出口参数。

热心网友 时间:2023-10-22 17:48

DATAS SEGMENT
IN_X DB 16
IN_N DB ?
IN_B DB 16 DUP('X')
IN_E DB ?
MSG1 DB 'Please input STR (Len = 1~15): ', 13, 10, 36
MSG2 DB 13, 10, 'Please input a char : '
MSG3 DB 13, 10, 36
MSG4 DB 13, 10, 'no word.', 13, 10, 36
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX, DATAS
MOV DS, AX
;-----------------------------------
LEA DX, MSG1
MOV AH, 9
INT 21H

LEA DX, IN_X
MOV AH, 10
INT 21H
CMP BYTE PTR IN_N, 1
JB EXIT

LEA DX, MSG2
MOV AH, 9
INT 21H

MOV AH, 1
INT 21H
MOV IN_E, AL

LEA DX, MSG3
MOV AH, 9
INT 21H
;-------------------------
MOV AL, IN_E
LEA BX, IN_B
MOV CL, IN_N
MOV CH, 0
LP1:
CMP AL, [BX]
JE DISP
INC BX
LOOP LP1
JMP H_NOT
;-------------------------
DISP:
MOV DH, AL
MOV AH, 2
LEA BX, IN_B
MOV CL, IN_N
MOV CH, 0
MOV BP, 0
LP2:
MOV DL, [BX]
INC BX
CMP BP, 0
JNE DISP1
CMP DL, DH
JNE DISP1
MOV BP, 1
JMP NEXT
DISP1:
INT 21H
NEXT:
LOOP LP2
MOV DL, DH
INT 21H
JMP EXIT
;-------------------------
H_NOT:
LEA DX, MSG4
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH
INT 21H
CODES ENDS
END START

可以满足题目要求。

热心网友 时间:2023-10-22 17:48

调试通过,不过只移动字符串中第一个相同的字符。
DATAS SEGMENT
s db 15 p(0),'$'
i db 'input :$'
o db 'output:$'
se db 0dh,0ah,'$'
NO db 'no word!$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

lea dx,i ;提示输入
mov ah,9
int 21h
;输入
lea si,s ;输入字符存放的地址
mov cx,15 ;输入次数
ss1:

mov ah,1 ;输入字符
int 21h

mov [si],al ;如果是保存
inc si

loop ss1

lea dx,se ;回车换行
mov ah,9
int 21h

lea dx,i ;提示输入
mov ah,9
int 21h

mov ah,1 ;输入字符
int 21h
mov bx,ax

lea dx,se ;回车换行
mov ah,9
int 21h

mov ax,bx
mov cx,15 ;查找
lea si,s
ss2:
cmp al,[si]
jnz ss5
dec cx ;找到后排序
ss3:
cmp cx,0
jz ss4
mov al,[si]
xchg al,[si+1]
mov [si],al
inc si

loop ss3
ss4:

lea dx,o ;找到后输出
mov ah,9
int 21h

lea dx,s
mov ah,9
int 21h

jmp ss6

ss5:
inc si
loop ss2

lea dx,NO ;未找到输出NO WORD
mov ah,9
int 21h

ss6:
mov ah,0 ;等待输入
int 16h

MOV AH,4CH
INT 21H
CODES ENDS
END START追问汇编:从键盘输入4位16进制数,然后用10进制数显示出来,要求使用子程序结构。
子程序中要说明入口参数和出口参数。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小篇幅造句 易车如何发布二手车 转让卖车信息流程 《易车》群聊消息关闭方法 易车消息夜间勿扰方法步骤 易车如何开启消息夜间勿扰 易车 开启@消息推送 ...当入射角是 时,反射角是 。我们能从各个方向看到本身不发光的物体... 发泄的近义词和反义词是什么_发泄是什么意思? 我的世界手游 我的世界手机版怎么做末地传送门? 我的世界手游 末地传送门怎么做? 安全评价师的报考科目有什么 汇编怎样编写从键盘接收字符串的程序呢? 汇编语言,从键盘上输入一串字符串,当输入字符是回车时,显示输入的所有字符 编写汇编语言程序段:从键盘输入一个字符串“please input a number”存入BUFF 用汇编语言实现键盘输入一段字符串,统计小写字母个数并显示。 从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现 如何使同汇编语言编写从键盘输入一段字符串然后逆序输出? 用汇编语言在键盘输入一个字符串,并将其从左向右滚动显示,求完整程序 汇编 从键盘上输入一个字符串,然后加上某些字符一起显示出来 汇编编程题目从键盘上输入一串字符串 汇编 从键盘输入一字符串 [汇编语言]由键盘输入任意字符串 然后显示出来 汇编语言顺序程序设计:从键盘输入一个字符串,讲其中的小写字母转换为大写字母,然后原样输出。 用汇编怎样实现从键盘输入一串字符至内存(利用DOS功能调用)? 汇编语言输入一个字符串 汇编语言,从键盘输入一字符串 汇编 输入字符串 白开水的是什么意思? 汇编语言,怎么从键盘输入字符串呢? 白开水和面汤的区别? 白开水是什么水, 自来水煮沸吗 是用什么水煮的才是白开水 汇编如何输入字符,再把它输出? 紫薯发苦是怎么回事 紫薯有点苦怎么回事 紫薯为什么有点微微发苦 紫薯吃起来苦怎么回事 紫薯为什么吃起来有点苦 紫薯发苦还可以吃么 紫薯有苦味能吃吗我用紫薯,红枣,糯米一起 紫薯苦的吃了没有问题吧 为什么紫薯煮熟了有点苦 红薯有苦味就不能吃,为什么紫薯有苦味可以吃呢 紫薯吃完 嘴里发苦正常吗? 紫薯为什么是苦的? 紫薯苦的是怎么回事 紫薯生吃是苦的吗 紫薯本省味道是甜的吗?为啥我妈蒸出来的有点苦 吃了有苦味的紫薯怎么办 外表好的紫薯为什么苦 藏骨是做什么的? 藏骨集团真的存在吗?