汇编语言十一
assume cs:code data segment db "Beginner's All-purpose Symblic Instruction Code.",0 data ends code segment start: mov ax,data mov ds,ax ;ds 段寄存器中存放要操作的源数据的段地址 mov si,0 ;初始偏移地址为 0 call letterc ;调用子程序 mov ah,4ch int 21h letterc: ;子程序开始执行前 ds:si 指向字符串的入口地址 push cx push si ;子程序执行前照常进行寄存器的保护工作 lnext: sub ch,ch ;ch 寄存器置零, 以备 loop 指令使用 mov cl,[si] ;将字符串第一个字符放进 cl 寄存器, 8bit jcxz lret ;如果还没到最后一个 0 的话, 则继续执行下一个指令, 一旦将字符串的最后一个 0 移入 cl 后, cx 寄存器为零, 程序跳转到 lret 标号处执行 cmp cl,'a' ;比较指令 jb plusi cmp cl,'z' ja plusi and byte ptr [si],11011111b ;前面执行了两次 cmp 指令, 只有当ds:si指向的字符为小写字母时, 才将其转变为大写字母 plusi: inc si jmp short lnext lret: pop si pop cx ret code ends end start