[BX]和loop指令03 - 零基础入门学习汇编语言25
生活随笔
收集整理的這篇文章主要介紹了
[BX]和loop指令03 - 零基础入门学习汇编语言25
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第五章:[BX]和loop指令03
?讓編程改變世界
Change the world by program
?
從上邊的課程中,我們可以總結出用cx和loop 指令相配合實現循環功能的三個要點:
(1)在cx中存放循環次數; (2)loop 指令中的標號所標識地址要在前面; (3)要循環執行的程序段,要寫在標號和loop 指令的中間。 ?用cx和loop指令相配合實現循環功能的程序框架如下:
mov cx,循環次數
s: 循環執行的程序段
loop s
?問題5.2
用加法計算123 x236 ,結果存在ax 中。 思考后看分析。 ?分析:可用循環完成,將123加236次。可先設(ax)=0,然后循環做236次(ax)=(ax)+123。
程序代碼 [codesyntax lang="asm"] assume cs:codecode segmentmov ax,0mov cx,236s:add ax,123loop smov ax,4c00hint 21h code endsend [/codesyntax] ?問題5.3
改進問題5.2程序,提高123x236 的計算速度。 思考后看分析。 ?分析:問題5.2程序做了236 次加法,我們可以將236 加123次。可先設(ax)=0,然后循環做123次(ax)=(ax)+236,這樣可以用123 次加法實現相同的功能。
? 程序代碼請自行實現。(參考代碼) [codesyntax lang="asm"] assume cs:codecode segmentmov ax,0mov cx,123s: add ax,232loop smov ax,4c00hint 21h code endsend [/codesyntax] ?在Debug中跟蹤用loop指令實現的循環程序
?考慮這樣一個問題,計算ffff:0006單元中的數乘以3,結果存儲在dx中。我們分析一下:
(1)運算后的結果是否會超出dx所能存儲的范圍? ffff:0006 單元中的數是一個字節型的數據,范圍在0~255之間,則用它和3相乘結果不會大于65535,可以在dx 中存放下。 (2)我們用循環累加來實現乘法,用哪個寄存器進行累加? 我們將ffff:0006單元中的數賦值給ax,用dx進行累加。先設(dx)=0,然后做3次(dx)=(dx)+(ax)。 (3) ffff:0006單元是一個字節單元,ax是一個 16 位寄存器,數據長度不一樣,如何賦值? 注意,我們說的是“賦值”,就是說,讓 ax 中的數據的值(數據的大小)和ffff:0006 單元中的數據的值(數據的大小)相等。 8位數據01H和16位數據0001H的數據長度不一樣,但它們的值是相等的。 ?那么我們如何賦值?
ffff:0006單元中的數據是XXH,若要ax中的值和ffff:0006單元中的相等,ax中的數據應為00XXH。 所以,若實現ffff:0006單元向ax 賦值,我們應該令(ah)=0,(al)=(ffff6H)。 實現計算ffff:0006單元中的數乘以3,結果存儲在dx中的程序代碼。 注意程序中的第一條指令mov ax,0ffffh。 我們知道大于9FFFH的十六進制數據A000H、A001H、…… 、C000H、C001H、……、FFFEH、FFFFH等,在書寫的時候都是以字母開頭的。而在匯編源程序中,數據不能以字母開頭,所以要在前面加0。 ?下面我們對程序的執行過程進行跟蹤。
? 首先 ,我們將它編輯為源程序文件,文件名定為 p3.asm ;對其進行編譯連接后生成p3.exe;然后再用Debug對p3.exe中的程序進行跟蹤。 上面,我們通過對一個循環程序的跟蹤,更深入一步地講解了 loop指令實現循環的原理。 下面,我們將前面的程序改一下,計算 ffff:0006單元中的數乘以 123,結果存儲在dx中。 ?更改程序:只要將尋循環次數改為123。
但是,問題來了……調試的話怎么辦……總不能搞123次吧……很累的……對吧 ^v^ 于是乎,我們引入G命令來解決! 也可以是 P 命令!! [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://kuai.xunlei.com/d/LBQBGWVECUHX']視頻下載[/Downlink]轉載于:https://www.cnblogs.com/LoveFishC/archive/2010/11/30/3846004.html
總結
以上是生活随笔為你收集整理的[BX]和loop指令03 - 零基础入门学习汇编语言25的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李彦宏:AI不会让工作机会减少 会创造更
- 下一篇: 给大家分享一个简单的例子 给SWF加一个