汇编语言大小写字母转换程序

汇编语言大小写字母转换程序,第1张

        CODE  SEGMENT

              ASSUME    CS:CODE

 

        BUFF  DB        13,10,' INSERT:','$'

 

      START:  PUSH      CS

              POP       DS

              PUSH      CS

              POP       ES

              LEA       DX,BUFF

              MOV       AH,9

              INT       21H

              MOV       AH,1

              INT       21H

              CALL      ISLOW

              CALL      LFCR

              CMP       AH,1

              JE        @1

              MOV       DL,AL

              MOV       AH,2

              INT       21H

              JMP       @2

         @1:

              SUB       AL,20H

              MOV       DL,AL

              MOV       AH,2

              INT       21H

         @2:

              MOV       AH,4CH

              INT       21H

       

========================================================

 al--为要判断的字符,ah--为返回结果

                       ah=1 为是 ah=0 为否

       ISLOW  PROC      NEAR

              PUSH      ES

              PUSH      CX

              PUSH      DI

              PUSHF

              PUSH      游配CS

              POP       ES

       神纯指       LEA       DI,@LOWCHS

              MOV       CX,26

              REPNE     SCASB

              JE        @ISLOW1

              MOV       AH,0

              JMP       @ISLOWEXIT

    @ISLOW1:

              MOV       AH,1

 @ISLOWEXIT:

              POPF

              POP       DI

              POP       CX

              POP       ES

              RET

     @LOWCHS  DB        'abcdefghijklmnopqrstuvwxyz'

       ISLOW  ENDP

====================================================

        LFCR  PROC      NEAR

              PUSH      AX

              PUSH      DX

             裤好 MOV       AH,2

              MOV       DL,13

              INT       21H

              MOV       DL,10

              INT       21H

              POP       DX

              POP       AX

              RET

        LFCR  ENDP

=============================

        CODE  ENDS

              END       START

我自己简单编了一个。。。 下面的程序是16位汇编,以十进制数89158为例,明正编译通过,运行正确。

Program Name: Dec_ASCII.asm

Dec_ASCII SEGMENT

ASSUME CS:Dec_ASCII,DS:Dec_ASCII

ORG 100H

Start: jmp Begin

ASCII DB 5 dup(' ') 保存十进制无符号数的ASCII

ASCII_End DB '$' 字符串结束标志

DecimalDW 89158 十进制无符号数,最大65535。

Begin: lea di,ASCII_End 字符串尾地址

dec di

mov bx,10 用于除10,取商数和余数

std 设置变址寄存器变址方向

mov ax,Decimal 取十进制无符号数

ASCII_Ctr: xor dx,dx

div bx 除10,取商数和余数

xchg ax,dx 交换商数和余数

or al,30h 转换成ASCII码

stosb 保存ASCII码

mov ax,dx 把商数放入ax中

cmp ax,0

ja ASCII_Ctr 商数大改兆于0,继续核槐租取余数

lea dx,ASCII 字符串首地址

mov ah,9 显示结果

int 21h

Exit_Proc: mov ax,4c00h 结束程序

int 21h

Dec_ASCII ENDS

END Start

mov ah,1

int 21h

第一行表示字符输入功能(1号)赋值给ah

第二行是触发上面的那条指令 内部中断指令 使得输入并显示在屏幕上。

内存中存放的是一个字符的ASCII码 比如‘$’这个是美元符 对应的ASCII码为24 通常表示字符串的结尾。

(1)1号系统功能调用-键盘输入并回显

此调用的功能是系统扫描键盘并等待键盘输入一个字符,有键按下时,先检查是否是Ctrl+Break键,若是则将字符的键值(ASCII码)送入AL寄存器中,并在屏幕上显示该字符。

此调用没有入口参数。

例如:下列语句可实现键盘输入。

MOVAH,01H ;01H为功能号

INT21H

(2)2号系统功能调用-显示输出

此调用的功能是向输出设弊枯备输出一个字符。

入口参数:被显铅裂示字符的ASCII送DL。

例如:要在屏幕上显示“$”符号,可用以下指令序列

MOVDL,’$’

MOVAH,02H

INT21H

(3)3号系统功能调用-异步通信输入(从串口输入字符)

3号系统功能调用的功能是将从异步串行通信口(默认为COM1)输入一个字符(或者ASCII码)。

出口参数:输入的ACSII码送AL寄存器中。

DOS系统初始化时此端口的标准是字长8位、2400波特、一个停止位、没有奇偶校验位。

(4)4号系统功能调用-异步通信输出(从串口输租激洞出字符)

此调用的功能是系统将从异步通信口(默认为COM1)输出一个字符(或者ASCII码)。

入口参数:被输出的字符的ASCII码送入DL中。

例如:现要将“$”这个符号通过异步串行通信口输出,指令序列如下:

MOV DL,’$’

MOV AH,04H

IN 21H

5)5号系统功能调用-打印机输出(从串口输出字符)

此调用的功能是将一个字符输出到打印机(默认1号并行口)。

入口参数:欲打印的字符的ASCII码送入DL寄存器中。

6)6号系统功能调用-直接控制台输入输出字符

此调用的功能是从键盘输入一个字符,或输出一个字符到屏幕。

如果(DL)=0FFH,表示是从键盘输入字符。

当标志ZF=0时,表示有键被按下,将字符的ASCII码送入AL寄存器中。

当标志ZF=1时,表示没有键按下,寄存器AL中不是键入字符的ASCII码。

如果(DL)≠0FFH,表示输出一个字符到屏幕,将被输出字符ASCII码送到DL中。此调用与1号、2号调用的区别在于不检查Ctrl+Break。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12450201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存