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

这里写图片描述

下面需要去转换的数据是将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

这里写图片描述

猜你喜欢

转载自blog.csdn.net/zcmuczx/article/details/80365819