code segment ;代码段 assume cs:code,ds:code org 100h ;从100h开始start:jmp begin ;跳到beginp1 db 100 p2 db 0array db 100h dup(?) ;置100个字节的缓冲区存放数据
begin: lea bx,array ;将array的首地址给bx mov ax,cs ;置cs-->ds mov ds,ax mov dx,offset p1 ;将p1的偏移量给dx mov ah,0ah ;调用中断21的0a号功能从键盘接收字符 int 21h xor bx,bx ;将bx清零 mov bl,p2 ;p2-->bl mov array[bx],'$' ;送'$'至字符串尾 mov di,0ffffh ;-1-->dinext: inc di ;di自加 cmp array[di],'$' ;比较 je exit ;相等,则跳到exit执行 cmp array[di],41h ;(A~Z-->41h-5ah a~z-->61h-7ah)与a比较 jl exit ;小于,则跳 cmp array[di],5ah ;与z比较 jg next1 ;大于,则跳 add array[di],20h jmp next ;加20h,大写转小写next1: cmp array[di],'$' ;比较 je exit ;相等,则跳到exit执行 cmp array[di],61h ;(A~Z-->41h-5ah a~z-->61h-7ah)与A比较 jl exit ;小于,则跳 cmp array[di],7ah ;与Z比较 jg exit ;大于,则跳 sub array[di],20h jmp next ;减20h,小写转大写disp: loop nextexit: mov p1,0dh ;回车换行 mov p2,0ah mov ah,09h int 21h mov ah,4ch ;程序结束 int 21h code ends end begin