+ -
当前位置:首页 → 问答吧 → 汇编上机题目

汇编上机题目

时间:2011-12-14

来源:互联网


这个是大写转换小写:
DSEG SEGMENT
STRING DB 'HOW are yoU ! ','$' ;这个string语句以$结束
DSEG ENDS

CSEG SEGMENT
  ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
  MOV DS,AX ;数据段初始化
  MOV SI,OFFSET STRING ;取字符串首地址
AGAIN:MOV AL,[SI] ;取一字符
  CMP AL,'$' ;判断是否到达字符串末尾
  JZ OK ;到字符串末尾,转
  CMP AL,'A' ;判断是否为大写字母
  JB NEXT ;否,转 继续
  CMP AL,'Z'  
  JA NEXT
  OR AL,20H ;是大写字母,改为小写字母
  MOV [SI],AL ;送回到字符串中
NEXT: INC SI ;调整指针
  JMP AGAIN ;继续
OK: MOV DX,OFFSET STRING ;取最终字符串首地址  
  MOV AH,9 ;9号功能调用 输出显示字符串
  INT 21H
  MOV AX,4C00H ;结束
  INT 21H
CSEG ENDS
  END START
求一个小写转换大写的代码,谢谢!

作者: qhzhang9   发布时间: 2011-12-14

引用楼主 qhzhang9 的回复:
这个是大写转换小写:
DSEG SEGMENT
STRING DB 'HOW are yoU ! ','$' ;这个string语句以$结束
DSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
MOV DS,AX ;数据段初始化
MOV SI,OFFSET STRING ;取字符串首地址
……

Assembly code
;小写变大写
stack segment stack
    dw 256 dup(?)
stack ends
;---------------------------------------------------------------------
data segment
    mess1    db       'Input string : $'
    mess2    db 13,10,'Output string: $'
    string    db 100
    count    db ?
    chars    db 100 dup(?)
data ends
;---------------------------------------------------------------------
code segment
        assume cs:code,ds:data,ss:stack
start:
        nop
        mov ax,data
        mov ds,ax
        
        lea dx,mess1
        mov ah,9
        int 21h
        lea dx,string
        mov ah,10            ;输入串到指定缓冲区
        int 21h
;---------------------------------------------------------------------
;问题域的核心代码        
        xor si,si
        xor cx,cx
        mov cl,count        ;取出实际输入字符数
loop1:
        mov al,chars[si]
        cmp al,61h            ;'a',小于则不需要转换
        jb  next1
        cmp al,7ah            ;'z',大于也不需要转换
        ja  next1
        sub al,20h            ; 'a' - 'A',转换了
        mov chars[si],al    ; 回填
next1:
        inc si              ;指向下一个
        loop loop1
        
        mov al,'$'
        mov chars[si],al       ;赋结束符
;--------------------------------------------------------------------- 
        lea dx,mess2
        mov ah,9
        int 21h
        
        lea dx,chars
        mov ah,9
        int 21h
       
        mov ax,4c00h
        int 21h
code ends
        end start


作者: gsy999   发布时间: 2011-12-14