调用中断将字符串中小写字母转化为大写字母
DATAS SEGMENT
;此处输入数据段代码
msg db 'welcome to masm','0'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码,设置好es:[di]和ds:[si]来进行数据的转移
;设置ds:[si],设置源目的地
mov ax,cs
mov ds,ax
mov si,offset change
;设置es:[di],设置目的地
mov ax,0
mov es,ax
mov di,200h
mov cx,offset last - offset change ;设置移动的方向
cld ;设置正向移动
rep mov*** ;将数据进行移动
;下面开始设置7c号中断
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
;设置句子的起始位置,将ds:[si]指向这个句子
mov ax,DATAS
mov ds,ax
mov si,offset msg
int 7ch
;这里已经设置好中断向量了
;mov ax,10
;int 7ch
MOV AH,4CH
INT 21H
;书写一个中断,必须加iret
;一个中断必须要有iret来返回原有的程序中,这里只需要修改这里的内容即可
;ds:[si]指向的是字符串的首地址,将字符串中的小写字母转化为大写字母,最后的字符是0
;分析:如何将一个小写字母转化为大写字母,小写字母和大写字母之间的差距就是ASCII差20h,就是32,小写字母更大一些
change:
push cx
push si
s: cmp byte ptr [si],0 ;判断这个是不是0
jz s1 ;如果是0的话就跳出循环
cmp byte ptr [si],61h ;和a进行比较
*** s2
cmp byte ptr [si],7Ah
ja s2
and byte ptr [si],11011111b ;进行与操作,减去20h
s2:inc si
jmp s ;继续比较操作,转换字母大小
s1:pop di
pop cx
iret ;这个是用于返回主程序的
last:nop
;需要程序存放到0:200处的内存中,并且将程序的地址存放到7c号中断处
CODES ENDS
END START
NDS END START
调用中断将字符串中小写字母转化为大写字母
DATAS SEGMENT
;此处输入数据段代码
msg db 'welcome to masm','0'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码,设置好es:[di]和ds:[si]来进行数据的转移
;设置ds:[si],设置源目的地
mov ax,cs
mov ds,ax
mov si,offset change
;设置es:[di],设置目的地
mov ax,0
mov es,ax
mov di,200h
mov cx,offset last - offset change ;设置移动的方向
cld ;设置正向移动
rep mov*** ;将数据进行移动
;下面开始设置7c号中断
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
;设置句子的起始位置,将ds:[si]指向这个句子
mov ax,DATAS
mov ds,ax
mov si,offset msg
int 7ch
;这里已经设置好中断向量了
;mov ax,10
;int 7ch
MOV AH,4CH
INT 21H
;书写一个中断,必须加iret
;一个中断必须要有iret来返回原有的程序中,这里只需要修改这里的内容即可
;ds:[si]指向的是字符串的首地址,将字符串中的小写字母转化为大写字母,最后的字符是0
;分析:如何将一个小写字母转化为大写字母,小写字母和大写字母之间的差距就是ASCII差20h,就是32,小写字母更大一些
change:
push cx
push si
s: cmp byte ptr [si],0 ;判断这个是不是0
jz s1 ;如果是0的话就跳出循环
cmp byte ptr [si],61h ;和a进行比较
*** s2
cmp byte ptr [si],7Ah
ja s2
and byte ptr [si],11011111b ;进行与操作,减去20h
s2:inc si
jmp s ;继续比较操作,转换字母大小
s1:pop di
pop cx
iret ;这个是用于返回主程序的
last:nop
;需要程序存放到0:200处的内存中,并且将程序的地址存放到7c号中断处
CODES ENDS
END START
NDS END START
举报