汇编语言,键盘输入十个字母,按ascll从大到小排序,并输出!

供稿:hz-xin.com     日期:2025-01-13
c语言用冒泡法选择法从键盘任意输入十个小写字母,按从大到小的顺序排序输出。

1 输入;
2 排序;
3 输出。
参考代码如下:
#include
int main()
{
int a[10];//用来存数据
int i,j,temp;

for(i = 0; i < 10; i ++)//输入10个数。
scanf("%d",&a[i]);
for (j = 0; j < 9; j++)//标准冒泡法排序
for (i = 0; i < 9- j; i++)
{
if(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}

for(i = 0; i < 10; i ++)//输出。
printf("%d,",&a[i]);
printf("
");

return 0;
}

CODE SEGMENT ASSUME CS:CODE ORG 100H START: PUSH CS POP DS PUSH CS POP ES CALL INPUTNUM MOV AX,NUM MOV N,AX CALL BUBBLESORT MOV AH,2 MOV DL,10 INT 21H MOV DL,13 INT 21H MOV CX,N LEA SI,ARRAY @M1: MOV AX,[SI] CALL DISPAX INC SI INC SI LOOP @M1 MOV AH,4CH INT 21H N DW ?;============================================ BUBBLESORT PROC NEAR LEA BX,ARRAY LEA SI,NUM MOV AX,SI SUB AX,BX ROR AX,1 MOV WORD PTR[NUM],AX DEC WORD PTR[NUM] MOV WORD PTR[I],0 ; 以下采用冒泡排序 LEA DI,ARRAY LINE1: INC WORD PTR[I] MOV AX,WORD PTR[I] CMP AX,WORD PTR[NUM] JG LINE3 MOV WORD PTR[J],0 LINE2: INC WORD PTR[J] MOV AX,WORD PTR[NUM] INC AX SUB AX,WORD PTR[I] CMP WORD PTR[J],AX JG LINE1 MOV BX,WORD PTR[J] ROL BX,1 MOV AX,WORD PTR[DI][BX-2] CMP AX,WORD PTR[DI][BX] JNC LINE2 MOV CX,WORD PTR[DI][BX] MOV WORD PTR[DI][BX],AX MOV WORD PTR[DI][BX-2],CX JMP LINE2 LINE3: RET I DW ? J DW ? BUBBLESORT ENDP;===============================================; 键盘输入数值数组子程序(数组名为array,元素个数存放在num中) INPUTNUM PROC NEAR ; 输入的数据以一个空格分隔,以回车符结束输入 LEA DI,ARRAY ;将数组第一个元素的有效地址置入DI MOV WORD PTR[NUM],0 STIN: MOV AX,0 PUSH AX AGAIN1: MOV AH,1 INT 21H MOV BYTE PTR[CHAR],AL CMP AL,13 JE LINE0 CMP AL,' ' JE LINE0 SUB AL,30H MOV AH,0 MOV SI,AX POP AX MOV CL,10 MOV CH,0 MUL CX ADD AX,SI PUSH AX JMP AGAIN1 LINE0: POP AX MOV WORD PTR[DI],AX INC WORD PTR[NUM] CMP BYTE PTR[CHAR],13 JE STINEND INC DI INC DI JMP STIN STINEND: RET ARRAY DW 100 DUP(0) NUM DW 0 CHAR DB ? INPUTNUM ENDP ;=============================================== DISPAX PROC NEAR PUSH BX PUSH CX PUSH DX PUSH SI PUSH DS PUSH CS POP DS PUSH AX MOV AH,2 MOV DL,32 INT 21H POP AX MOV BYTE PTR NZ,0 PUSH AX LEA SI,DIVARR MOV CX,5 @1: POP AX MOV DX,0 MOV BX,[SI] DIV BX PUSH DX CMP AL,0 JNE @2 CMP BYTE PTR NZ,1 JE @2 CMP CX,1 JE @2 MOV DL,20H JMP @3 @2: ADD AL,30H MOV DL,AL MOV BYTE PTR NZ,1 @3: MOV AH,2 INT 21H INC SI INC SI LOOP @1 POP DX POP DS POP SI POP DX POP CX POP BX RET DIVARR DW 10000,1000,100,10,1 NZ DB 0 DISPAX ENDP;============================================= CODE ENDS END START

code  segment
      assume cs:code
      org 100h
start:jmp begin
str1  db 80
str1n db ?
str1s db 80 dup(?)

begin:push cs
      pop ds
      push cs
      pop es
      mov ah,10      ; 键盘输入
      lea dx,str1
      int 21h
      
      mov cl,str1n
      mov ch,0
      push cx
      lea si,str1s
      call sort      ; 排序
      
      mov ah,2
      mov dl,13      ; 回车
      int 21h
      mov dl,10      ; 换行
      int 21h
      
      pop cx
      lea si,str1s
      mov ah,2
@1:
      mov dl,[si]   ; 输出排序结果
      int 21h
      inc si
      loop @1
      
      mov ah,4ch
      int 21h
      
;===============================
; 单个字符串内部的排序(冒泡排序)
sort  proc near
      ; 串长度置入cx,串首地址置入 si
      push ax
      push cx
      push dx
      push si
      push di
      pushf
      push cx
      pop dx
      dec dx
@sortl1:
      mov cx,dx
      mov di,si
@sortl2:
      mov al,[di+1]
      cmp al,[di]
      jb @sortnext
      xchg al,[di]
      mov [di+1],al
@sortnext:
      inc di
      loop @sortl2
      dec dx
      jnz @sortl1
      popf
      pop di
      pop si
      pop dx
      pop cx
      pop ax
      ret
sort  endp
;====================================
code  ends
      end start


按照下图程序,即可。

反相显示的,是排序部分。

已经经过实验,可以满足题目要求。



c语言从键盘输入十个字母,要求大小写均包含。将全部字符分别转换成_百 ...
C语言程序设计中,编写一个程序来从键盘输入十个字母,要求包含大小写字母,并将所有输入的字符转换为对应的大写或小写形式。具体代码如下:include int main() { int i = 0;char str[10];for (i = 0; i < 10; i++) { scanf("%c", &str[i]);if (str[i] >= 'a' && str[i] ...

汇编语言,键盘输入十个字母,按ascll从大到小排序,并输出!
)begin:push cs pop ds push cs pop es mov ah,10 ; 键盘输入 lea dx,str1 int 21h mov cl,str1n mov ch,0 push cx lea si,str1s call sort ; 排序 mov ah,2 mov dl,13 ; 回车 int 21h mov dl,10 ; 换行 int 2...

编写程序输出26个大写字母和它们的ASCII代码值?
{ char c;printf("输入1个字符");scanf(" %c",&c);printf("字母%c的数值为:%hhd",c,c);return 0;}

输入十个字母无论大小写,使他们输出时按字母表的顺序排列,并且全为小写...
include <stdio.h>int main(){char ch; int i,j,a[26]={0}; for(i=0;i<10;i++) {scanf("%c",&ch); if(ch>='A'&&ch<='Z')ch+=32; if(ch>='a'&&ch<='z')a[ch-'a']++; } for(i=0;i<26;i++) for(j=0;j...

c语言 利用ascii表输出十个数字符号 26个大写字母符号 笑脸符号和扑 ...
include<stdio.h>main(){char s;int i;s='0';\/\/字符赋值ASCII的数字0 for(i=0;i<10;i++)\/\/打印10个数字 printf("%c",s+i);printf("\\n");\/\/换行 s='A';\/\/字符赋值ASCII的字母A for(i=0;i<26;i++)\/\/打印26个字母 printf("%c",s+i);printf("\\n");\/\/换行 pr...

从键盘上输入一个大写字母,要求输出其大小写字母及对应的ASCII码值...
void main(){ char str;scanf("%c",&str);printf("%d,%c",str,str);printf("%d,%c",str+('a'-'A'),str+('a'-'A'));}

用C语言编程:从键盘输入一个英文大写字母,输出其对应的小写字母以及小写...
char ch; scanf("%c",&ch);\/\/输入大写字母 printf("%c,%d",ch-('A'-'a'),ch-('A'-'a')); \/\/输出.('A-'a')是ASC码表上大写与小写字母间的差值 \/\/ch-('A'-'a'):大写转小写。输出ASC码,利用输出格式控制%d就可以自动转换输出了 return 0; } ...

连续输入十个字母,用大写字母写出c语言编程
#include <stdio.h>#include <ctype.h>#define ALP_LEN 10 \/\/你要保留转换字母数的长度,也就是最后输出截取长度void alp_upper(){char c;int i = 0;puts("please input 10 alpha:");c = getchar();while(i < ALP_LEN){if(isalpha(c)) \/\/控制必须字母输入{if(isupper(c)){put...

c语言 输入10个单词 怎么才能按字典顺序输出 分别用插入排序和归并排序...
建立 索引表, 单词的存储索引--单词权值 逐个对应,每个单词 对应一个权值,每个字母对应 0~25, 单词的最后字母对应0,向前依次对应 26, 26*26, 26*26*26。。。, 26进制数,类似于十进制数, 然后 按权值进行排序

c语言 输入10个单词,按字典顺序输出 不要复制不对的过来啊
char str[10][30]={0}; int tem[10]; \/\/ 存放串的序号 int i,j; printf("请输入10个单词:"); for(i=0;i<10;i++)\/\/输入 { scanf("%s",str[i]); tem[i]=i; \/\/ 存放串的序号 } for(i=0;i<9;i++)\/\/排序 for(j=i+1;j<10;j++) if(strcmp(str[tem[i]],str[tem[j...