利用中断程序将小写字母转换为大写字母

这里写图片描述

下面需要去转换的数据是将conversation转换为大写

assume cs:code,ss:stack,ds:data

data segment
     db 'conversation',0
data ends
stack segment
   db 96 dub(0)
stack ends

code segment

   start:mov ax,cs
         mov ds,ax ;将要指向中断处理程序
         mov si,a
         mov cx,offset d - offset a ;设置cx寄存器的值给下面的rep指令使用
         mov ax,stack
         mov ss,ax    ;设置栈段
         mov sp,96

         mov ax,0
         mov es,ax
         mov di,200h ;移动di为200h

         cld
         rep movsb ;rep指令根据cxd额值去重复执行后面的串传送指令
         mov word ptr es:[7ch*4],200h ;设置中断向量表当中的中断程序的地址
         mov word ptr es:[7ch*4+2],0

         mov ax,data  ;这里就是要将小写字母转换为大写字母,所以设置数据段
         mov ds,ax
         mov si,0
         int 7ch

         mov ax,4c00h
         int 21h

       a: push cx ;保护寄存器的值
          push si

       b: mov cl,[si] ;这里主要是要去判断是否为最后一个字符了
          mov ch,0
          jcxz c
          and byte ptr [si],11011111b  ;做大小写转换
          inc si  ;指向下一个数据
          jmp short b 

       c: pop si
          pop cx
          iret

       d:nop

code ends
end start

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值