日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[BX]和loop指令03 - 零基础入门学习汇编语言25

發布時間:2023/12/19 编程问答 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。