汇编语言十一
assume cs:codedata segmentdb "Beginner's All-purpose Symblic Instruction Code.",0
data endscode segmentstart: mov ax,data mov ds,ax ;ds 段寄存器中存放要操作的源數據的段地址mov si,0 ;初始偏移地址為 0call letterc ;調用子程序mov ah,4chint 21hletterc: ;子程序開始執行前 ds:si 指向字符串的入口地址push cxpush si ;子程序執行前照常進行寄存器的保護工作lnext:sub ch,ch ;ch 寄存器置零, 以備 loop 指令使用mov cl,[si] ;將字符串第一個字符放進 cl 寄存器, 8bitjcxz lret ;如果還沒到最后一個 0 的話, 則繼續執行下一個指令, 一旦將字符串的最后一個 0 移入 cl 后, cx 寄存器為零, 程序跳轉到 lret 標號處執行cmp cl,'a' ;比較指令jb plusi cmp cl,'z'ja plusiand byte ptr [si],11011111b ;前面執行了兩次 cmp 指令, 只有當ds:si指向的字符為小寫字母時, 才將其轉變為大寫字母plusi:inc sijmp short lnext lret: pop sipop cx
ret
code ends
end start
?
轉載于:https://www.cnblogs.com/KKSJS/p/10016145.html
總結
- 上一篇: c#中引用类型作为值参数和引用参数问题
- 下一篇: Linux(CentOS)挂载NTFS格