



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第18章x86匯編程序基礎(chǔ)3.第二個(gè)匯編程序例18.2.求一組數(shù)的最大值的匯編程序#PURPOSE: This program finds thef maximum number of aiI #set of data items.1i #IbVARIABLES: The registers have| the following uses:Ir r# %edi - Holds the in dex of thedata item being exam ined# %ebx - Largest data item found:# %eax - Current data item! #| # T
2、he followingmemory locationsare used:! #1kI # datatems- con tai nsthe item1i data. A 0 is usedk11 # to termi nate the dataE#.secti on .datadata_items:#These are the data itemso ng3,67,34,222,45,75,54,34,44,33,22,11,66,0.secti on .text.globl _start_start:movl $0, %edi# move 0 intothe in dex registerm
3、ovl data_items(,%edi,4),%eax# load the first byte of datamovl %eax, %ebx# since thisis the first item, %eax is# the biggeststart loop:#start loopcmpl $0, %eax# check tosee if weve hit the endje loop_exitincl %edi# load n extvaluemovl data_items(,%edi,4),%eaxcmpl %ebx, %eax# comparevaluesjle start lo
4、op# jump toloop begi nning if the new# one isntbiggermovl %eax, %ebx# move thef value as the largestijmp start_loop# jump toj loop beginning j loop_exit:i # %ebx is the status code for theI I _;_exit system callj # and it already has the maximumJ movl $1, %eax#1 is the_exit() syscallj int $0 x80匯編、鏈
5、接、運(yùn)行:這個(gè)程序在一組數(shù)中找到一個(gè)最大的數(shù),并把它作為程序的退出狀態(tài)。這組數(shù) 在.data段給出:.long指示聲明一組數(shù),每個(gè)數(shù)占32位,相當(dāng)于C語言中的數(shù)組。這個(gè)數(shù)組開 頭定義了一個(gè)符號(hào)data_items,匯編器會(huì)把數(shù)組的首地址作為 data_items符號(hào) 所代表的地址,data_items類似于C語言中的數(shù)組名。data_items這個(gè)標(biāo)號(hào)沒有用.globl聲明,因?yàn)樗辉谶@個(gè)匯編程序內(nèi)部使用,鏈接器不需要用到這個(gè) 名字。除了ong之外,常用的數(shù)據(jù)聲明還有:.byte,也是聲明一組數(shù),每個(gè)數(shù)占 8位.ascii ,例如.ascii Hello world,聲明11個(gè)數(shù),取值為相應(yīng)字
6、 符的ASCII碼。注意,和C語言不同,這樣聲明的字符串末尾是 沒有0字符的,如果需要以0結(jié)尾可以聲明為.ascii Hello world0。data_items數(shù)組的最后一個(gè)數(shù)是0,我們?cè)谝粋€(gè)循環(huán)中依次比較每個(gè)數(shù),碰到0的時(shí)候讓循環(huán)終止。在這個(gè)循環(huán)中:*edi寄存器保存數(shù)組中的當(dāng)前位置,每次比較完一個(gè)數(shù)就把edi的值 加1,指向數(shù)組中的下一個(gè)數(shù)。 ebx寄存器保存到目前為止找到的最大值,如果發(fā)現(xiàn)有更大的數(shù)就更新ebx的值。 eax寄存器保存當(dāng)前要比較的數(shù),每次更新edi之后,就把下一個(gè)數(shù)讀到eax中。sta rt:Imovl $0, %edi初始化edi,指向數(shù)組的第0個(gè)元素I movl
7、data_items(,%edi,4), %eax這條指令把數(shù)組的第0個(gè)元素傳送到eax寄存器中。data_items是數(shù)組的首地 址, edi的值是數(shù)組的下標(biāo),4表示數(shù)組的每個(gè)元素占4字節(jié),那么數(shù)組中第edi 個(gè)元素的地址應(yīng)該是data_items + edi * 4,寫在指令中就是data_items(,%edi,4),這種地址表示方式在下一節(jié)還會(huì)詳細(xì)解釋。movl %eax, %ebxebx的初始值也是數(shù)組的第0個(gè)元素。下面我們進(jìn)入一個(gè)循環(huán),循環(huán)的開頭定義 一個(gè)符號(hào)start_loop ,循環(huán)的末尾之后定義一個(gè)符號(hào) loop_exit 。比較eax的值是不是0,如果是0就說明到達(dá)數(shù)組末尾
8、了,就要跳出循環(huán)。cmpl 指令將兩個(gè)操作數(shù)相減,但計(jì)算結(jié)果并不保存,只是根據(jù)計(jì)算結(jié)果改變eflags寄存器中的標(biāo)志位。如果兩個(gè)操作數(shù)相等,則計(jì)算結(jié)果為 0, eflags中的ZF位 置1。je是一個(gè)條件跳轉(zhuǎn)指令,它檢查 eflags中的ZF位,ZF位為1則發(fā)生跳 轉(zhuǎn),ZF位為0則不跳轉(zhuǎn),繼續(xù)執(zhí)行下一條指令??梢姳容^指令和條件跳轉(zhuǎn)指令 是配合使用的,前者改變標(biāo)志位,后者根據(jù)標(biāo)志位決定是否跳轉(zhuǎn)。je可以理解成“jump if equal ”,如果參與比較的兩數(shù)相等則跳轉(zhuǎn)。incl %edimovl data_items(,%edi,4), %eax將edi的值加1,把數(shù)組中的下一個(gè)數(shù)傳送到eax寄存器中cmpl %ebx, %eaxj jle start_loop把當(dāng)前數(shù)組元素eax和目前為止找到的最大值ebx做比較,如果前者小于等于后 者,則最大值沒有變,跳轉(zhuǎn)到循環(huán)開頭比較下一個(gè)數(shù),否則繼續(xù)執(zhí)行下一條指令。 jle 表示“ jump if less than or
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全技能培訓(xùn)
- 藝術(shù)培訓(xùn)學(xué)校年度總結(jié)
- 宗教信仰與法制教育
- 韶山研學(xué)班會(huì)課件
- 城鎮(zhèn)污水管網(wǎng)建設(shè)工程投資估算方案(參考模板)
- 汽車配套產(chǎn)業(yè)基地項(xiàng)目規(guī)劃設(shè)計(jì)方案(范文模板)
- 2025年SPI環(huán)氧乙烷銀催化劑項(xiàng)目建議書
- 2025年齒輪加工機(jī)床項(xiàng)目合作計(jì)劃書
- 2025年技術(shù)成果轉(zhuǎn)化服務(wù)項(xiàng)目建議書
- 2025年公路養(yǎng)護(hù)檢測(cè)設(shè)備項(xiàng)目合作計(jì)劃書
- GB 30980-2014海洋傾倒物質(zhì)評(píng)價(jià)規(guī)范疏浚物
- GA/T 1169-2014警用電子封控設(shè)備技術(shù)規(guī)范
- 第十二篇 糖尿病患者生活常識(shí)
- 污水處理站安全培訓(xùn)課件
- 2015高考全國新課標(biāo)1地理試題及答案
- 超星爾雅《詩經(jīng)》導(dǎo)讀檢測(cè)題答案
- GB 27954-2020 黏膜消毒劑通用要求
- 中考《紅星照耀中國》各篇章練習(xí)題及答案(1-12)
- (完整版)ECRS培訓(xùn)課件
- 外輪理貨工作英語
- 華中師范大學(xué)輔導(dǎo)員隊(duì)伍建設(shè)實(shí)施辦法
評(píng)論
0/150
提交評(píng)論