回 帖 发 新 帖 刷新版面

主题:将小写的字符串转为大写的字符串

从键盘上输入一个小写的字符串,存放在BUFX为首地址的存储区;将输入的小写的字符串转换为大写的字符串,存放在BUFD为首地址的存储区中,并在屏幕上显示

回复列表 (共3个回复)

沙发

可以运行

cr  equ  0dh
lf  equ  0ah
data     segment
prompt  db  'Input a string:  $'
bufx    db  80,?,80 dup(0)
bufz    db  80 dup(0)
data    ends

code    segment
        assume ds:data,cs:code
start:
      mov  ax,data
      mov  ds,ax
      lea  dx,prompt
      mov  ah,9
      int  21h
      lea  dx,bufx
      mov  ah,0ah
      int  21h
      mov  dl,lf
      mov  ah,2
      int  21h
      mov  dl,cr
      mov  ah,2
      int  21h
      mov  si,2
      mov  di,0
      mov  cl,bufx[1]
      mov  ch,0
s1:   cmp  si,cx
      je   exit
      sub  bufx[si],20h
      mov  al,bufx[si]
      mov  bufz[di],al
      mov  dl,bufx[si]
      mov  ah,2
      int  21h
      inc  si
      inc  di
      jmp  s1
exit:  mov  ah,4ch
       int  21h
code   ends

板凳

哦,好强啊

3 楼

ode segment                     ;代码段
     assume cs:code,ds:code
     org 100h                       ;从100h开始
start:jmp begin                  ;跳到begin
p1 db 100                   
p2 db 0
array db 100h dup(?)         ;置100个字节的缓冲区存放数据

begin:
      lea bx,array                 ;将array的首地址给bx
      mov ax,cs                    ;置cs-->ds
      mov ds,ax
      mov dx,offset p1           ;将p1的偏移量给dx
      mov ah,0ah                  ;调用中断21的0a号功能从键盘接收字符
      int 21h
      xor bx,bx                     ;将bx清零
      mov bl,p2                    ;p2-->bl
      mov array[bx],'$'          ;送'$'至字符串尾
      mov di,0ffffh                 ;-1-->di
next: inc di                        ;di自加
      cmp array[di],'$'            ;比较
      je  exit                          ;相等,则跳到exit执行
      cmp array[di],41h          ;(A~Z-->41h-5ah  a~z-->61h-7ah)与a比较
      jl  exit                            ;小于,则跳
      cmp array[di],5ah          ;与z比较
      jg  next1                        ;大于,则跳
      add array[di],20h
      jmp next                       ;加20h,大写转小写
next1:
      cmp array[di],'$'           ;比较
      je  exit                         ;相等,则跳到exit执行
      cmp array[di],61h          ;(A~Z-->41h-5ah  a~z-->61h-7ah)与A比较
      jl  exit                            ;小于,则跳
      cmp array[di],7ah          ;与Z比较
      jg  exit                           ;大于,则跳
      sub array[di],20h
      jmp next                       ;减20h,小写转大写
disp:
      loop next
exit: mov p1,0dh                 ;回车换行
      mov p2,0ah
      mov ah,09h
      int 21h
      mov ah,4ch                    ;程序结束
      int 21h    
code ends
     end begin

我来回复

您尚未登录,请登录后再回复。点此登录或注册