王爽《汇编语言》实验11——编写子程序

来源:互联网 发布:电大和网络教育的区别 编辑:程序博客网 时间:2024/05/20 19:19

;==========================================================================

;子程序LETTERC功能;将以0结尾的字符串中的小写字母转变成大写字母。

;==========================================================================

 

ASSUMECS:CODE,DS:DATA

 

DATASEGMENT

   DB"Beginners's All-purposeSymbolic Instruction Code.",0

DATAENDS

 

CODESEGMENT

START:

   MOVAX,DATA    ;初始化DS

   MOVDS,AX

   MOVSI,0       ;SI指向字符串的首地址

   CALL LETTERC    ;调用LETTERC子程序

   

   MOVAX,4C00H   ;程序返回

   INT21H

 

;----------------------------------------------------------------------------  

;名称:LETTERC

;功能:将以0结尾的字符串中的小写字母转变成大写字母。

;参数:DS:SI指向字符串的首地址

;返回:

LETTERCPROCNEAR

   PUSHSI            ;压栈

   PUSHAX

   COMPARE:

   MOVAL,[SI]            ;字符的ASCII码保存到AL

   CMPAL,0               ;0比较,是不是结尾符

   JE END_OF_STRING        ;,跳转到END_OF_STRING

   CMPAL,'a'             ;aASCII码比较 

   JB NEXT_CHAR            ;如果小于a,跳转到NEXT_CHAR

   CMPAL,'z'             ;zASCII码比较

   JA NEXT_CHAR            ;如果大于z,跳转到NEXT_CHAR         

   ANDBYTEPTR[SI],11011111B;小写字母转化为大写字母

   INCSI                 ;指向下一个字符

   JMP COMPARE         ;比较

   NEXT_CHAR:             

   INCSI                 ;指向下一个字符

   JMP COMPARE         ;比较

   END_OF_STRING:         ;中止比较,出栈返回

   INCSI                 ;指向下一个字符

   POPAX                 ;出栈

   POPSI

   RET                ;返回

LETTERCENDP

;-----------------------------------------------------------------------------

 

CODEENDS

END START

0 0
原创粉丝点击