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