当前位置:编程学习 > 汇编语言 >>

汇编语言程序设计题目,在线等答案!!!急!

5. 从键盘输入一个字母字符,将其统一为大写字母输出
补充:好的程序要简单,运行速度快,你们的都太复杂
追问:你这是c语言写的 我要求的是汇编语言写没看明白,前面的乱码是什么?而且从键盘输入指令也没看到你写啊 这是一个字符串 所以应该是
MOV AH ,OAH啊
答案:从键盘输入一串任意字符,将其中的字母统一为大写输出。
程序如下:
DATA  SEGMENT
    MSG1  DB  13, 10, 'Please input a  STR : $' 
    MSG2  DB  13, 10, 'The  STR in Upper is: $' 
    I1_L  DB  100
    I1_N  DB  ?
    I1_B  DB  100 DUP (?)
DATA  ENDS

CODE  SEGMENT
    ASSUME   CS:CODE, DS:DATA
START:
    MOV   AX,  DATA
    MOV   DS,  AX

    LEA   DX,  MSG1
    MOV   AH,  9
    INT   21H

    LEA   DX,  I1_L
    MOV   AH,  10
    INT   21H

    LEA   BX,  I1_B
    MOV   CL,  I1_N
    MOV   CH,  0
LOP:
    MOV   AL,  [BX]
    CMP   AL,  13
    JE    DISP

    CMP   AL,  'a'
    JB    NEXT
    CMP   AL,  'z'
    JA    NEXT
TO_UPPER:
    AND   AL, 11011111B
    MOV   [BX],  AL

NEXT:
    INC   BX
    LOOP  LOP
    JMP   NEXT

DISP:
    MOV   BYTE PTR [BX],  '$'
    LEA   DX,  MSG2
    MOV   AH,  9
    INT   21H

    LEA   DX,  I1_B
    MOV   AH,  9
    INT   21H

    MOV   AH, 4CH
    INT   21H

CODE  ENDS

    END   START

程序运行后,将以下列形式显示: 


C:\MASM>z

Please input a  STR : dkfmdoiw9092132KMSADLFdsdl;sd
The  STR in Upper is: DKFMDOIW9092132KMSADLFDSDL;SD
其他:#include<stdio.h>
main() 
{ 
char a[100];
char *p=a; 
scanf("%s",a);
while(*p!='\0') 
{ 
if(*p>='a' && *p<='z') *p=*p-32; 
printf("%c",*p);
p++; ;用我的吧 编译正确通过
;-------------------------------------------

;********************************数据段
data segment
        array db 0,0,0,0                                 ;数组开辟空间
        string1 db "Please input the lower case: $"       ;字符串以$结束
        string2 db "  Ok,the upper case is: $"  
        string3 db "What you inputed is not a lower case !Try again: $" 
           crlf db 13,10,13,10,"$"                        ;13回车,10换行
        data ends
;**********************************
;**********************************代码段
code segment
        assume ds:data,cs:code        ;段对应关系的说明
        main proc far                 ;far子程序调用时的参数 
                
        start:         
                push ds
                sub ax,ax             ;清零
                push ax               ;压栈
                
                mov ax,data           ;将数据传送如数据段
                mov ds,ax 
;---------------------------------------                
;主程序开始  
;---------------------------------------------------------        
;显示"Please input the lower case:$"的内容
        mov ah,09h
        lea dx,string1          
        int 21h          
;----------------------------------------------------------
;键盘输入字母      
        mov bx,offset array     ;设定基址        
   input:                
        mov ah,01h
        int 21h
        cmp al,20h              ;比对空格
        je input        
        cmp al,61h              ;al和'a'相比
        jb  next                ;al值小于'a',显示提示继续输入
        cmp al,7ah              ;al值和'z'比较
        jnb next                ;大于'z', 显示提示继续输入
        sub al,20h              ;减去32即为对应的大写字母
        mov bl,al               ;用bl将值取走         
;----------------------------------------------------------------
;换行
        mov ah,09h
        lea dx,crlf            
        int 21h 
;---------------------------------------------------------        
;显示"The upper case is:$"的内容
        mov ah,09h
        lea dx,string2          
        int 21h 
;-----------------------------------------------------
;大写字母输出                         
        mov dl,bl
        mov ah,02h
        int 21h 
        ret                    ;返回(return)
;----------------------------------------------------------------
;换行
next:
        mov ah,09h
        lea dx,crlf            
        int 21h 
;---------------------------------------------------------        
;显示"what you inputed is not a lower case !Try again:$"的内容
        mov ah,09h
        lea dx,string3          
        int 21h
        jmp input                        
;-------------------------------------------------------------                  
   main endp                   ;主函数结束
;********************************************             
              code ends        ;代码段定义结束
              end  start       ;这个程序段全部结束,程序段不但有代码段还有其他段 编制程序完成 12h,45h,0F3h,6Ah,20h,0FEh,90h,0C8h,57h 和34h等10DATAS SEGMENT bdata db 01h,02h,03h,04h,05h,06h,07h,08h,09h, MOV AH,1
INT 21H
CMP AL,'a'
JB L1
CMP al,'z'+1
JNB L1
AND AL,5FH
L1:
MOV DL,AL
MOV AH,2
INT 21H 

上一个:进行汇编语言通用寄存器不够用时,可以暂时用专用寄存器存储临时量吗
下一个:求汇编语言高手帮解释下这个三角波程序

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,