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