王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)
生活随笔
收集整理的這篇文章主要介紹了
王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
問題 7.9: 將 datasg 段中前 4 個字母變成大寫
?
匯編代碼:
assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdb 0,0,0,0,0,0,0,0 stacksg endsdatasg segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify ' datasg ends codesg segmentstart:mov ax, datasgmov ds, axmov ax,stacksg ; 棧 用來臨時保存數據mov ss,axmov sp,16mov bx,0 ; 表示行mov cx,4 ; 外層循環循環次數lop_1:push cxmov si,3 mov cx,4lop_2:mov al,[bx+si]and al,11011111bmov [bx+si],alinc siloop lop_2add bx,16 ; bx + 16 表示 指示下一行pop cxloop lop_1 mov ax, 4c00hint 21h codesg endsend start程序運行前?數據段?數據:
程序運行后?數據段?數據
分析:
第7章 【更靈活的定位內存地址的方法】??主要學習了一下內容:
?
匯編語言是按行一條一條指令進行執行的,可以按高級語言進行縮進來寫匯編程序 (?例如可以按照?Pyhton?的空格縮進?),最后再把縮進給去掉,這樣可以更好的理解匯編的邏輯和層級關系。
?
按?python?格式的縮進后的匯編代碼:
assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdb 0,0,0,0,0,0,0,0 stacksg endsdatasg segmentdb '1. display ' ;16字節db '2. brows ' ;16字節db '3. replace ' ;16字節db '4. modify ' ;16字節 datasg ends codesg segmentstart:mov ax, datasgmov ds, axmov ax,stacksg ; 棧 用來臨時保存數據mov ss,axmov sp,16mov bx,0 ; 表示行mov cx,4 ; 外層循環循環次數lop_1:push cxmov si,3 mov cx,4lop_2:mov al, [bx+si]and al, 11011111bmov [bx+si], alinc siloop lop_2add bx,16 ; bx + 16 表示 指示下一行pop cxloop lop_1 mov ax, 4c00hint 21h codesg endsend start?
?
?
總結
以上是生活随笔為你收集整理的王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 中 with 用法详解
- 下一篇: 小甲鱼 OllyDbg 教程系列 (十一