資源描述:
《微機(jī)原理 陳繼紅 王春明版課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、復(fù)習(xí)控制類指令無(wú)條件轉(zhuǎn)移指令:JMP條件轉(zhuǎn)移指令循環(huán)控制指令無(wú)條件循環(huán)指令LOOP條件循環(huán)指令LOOPZ/LOOPELOOPNZ/LOOPNE子程序調(diào)用和返回指令子程序調(diào)用指令:CALL子程序返回指令:RET中斷控制指令一般中斷指令:INTn溢出中斷指令:INTO中斷返回指令:IRET標(biāo)志操作指令進(jìn)位標(biāo)志CF操作指令方向標(biāo)志DF操作指令中斷允許標(biāo)志IF操作指令其他處理器控制指令第4章匯編語(yǔ)言程序設(shè)計(jì)本章主要內(nèi)容:匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言語(yǔ)句格式偽指令功能調(diào)用匯編語(yǔ)言程序設(shè)計(jì)4.1匯編語(yǔ)言源程序了解:計(jì)算機(jī)的三種語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言語(yǔ)句格式一、計(jì)算機(jī)設(shè)計(jì)語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高
2、級(jí)語(yǔ)言面向機(jī)器的語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言匯編程序匯編語(yǔ)言源程序用助記符編寫(xiě)源程序的編譯程序匯編程序匯編語(yǔ)言源程序機(jī)器語(yǔ)言目標(biāo)程序匯編程序的功能匯編程序的主要功能是將由匯編語(yǔ)言(助記符)編寫(xiě)的源程序翻譯成用機(jī)器語(yǔ)言(二進(jìn)制代碼)編寫(xiě)的目標(biāo)程序。下圖可用以說(shuō)明這個(gè)功能。匯編程序的功能目標(biāo)代碼文件:其中的地址數(shù)據(jù)還是浮動(dòng)的(相對(duì)的),不能直接運(yùn)行;列表文件:包含程序的邏輯地址、代碼程序及源程序?qū)φ涨鍐?,附有引用符?hào)表,可用DOS的TYPE命令輸出;交叉索引文件:包含了符號(hào)定義行號(hào)和引用行號(hào),不能用TYPE命令輸出,需要執(zhí)行CREF文件后生成索引列表文件(.REF)才能輸出。觀察可得:
3、匯編語(yǔ)言源程序作為匯編程序(MASM或ASM)這個(gè)“翻譯”的輸入,而這個(gè)“翻譯”的輸出是三個(gè)文件:二、匯編語(yǔ)言源程序結(jié)構(gòu)數(shù)據(jù)段名SEGMENT…數(shù)據(jù)段名ENDS附加段名SEGMENT…附加段名ENDS堆棧段名SEGMENT…堆棧段名ENDS代碼段名SEGMENT…代碼段名ENDS三、匯編語(yǔ)言語(yǔ)句類型指令性語(yǔ)句指示性語(yǔ)句CPU執(zhí)行的語(yǔ)句,能夠生成目標(biāo)代碼CPU不執(zhí)行,而由匯編程序執(zhí)行的語(yǔ)句,不生成目標(biāo)代碼四、匯編語(yǔ)言語(yǔ)句格式指令性語(yǔ)句:[標(biāo)號(hào):][前綴]助記符[操作數(shù)],[操作數(shù)][;注釋]指令的符號(hào)地址,標(biāo)號(hào)后要有冒號(hào)操作碼注釋前加分號(hào)指示性語(yǔ)句格式:[名字]偽指令助記符操作數(shù)[,
4、操作數(shù),…][;注釋]變量的符號(hào)地址,其后不加冒號(hào)指示性語(yǔ)句中至少有一個(gè)操作數(shù)區(qū)分標(biāo)號(hào)和名字標(biāo)號(hào)后有冒號(hào),在指令性語(yǔ)句前;名字后不加冒號(hào),在指示性語(yǔ)句前。名字由英文字母、數(shù)字及專用字符組成,最大長(zhǎng)度不能超過(guò)31個(gè),且不能由數(shù)字打頭,不能用保留字(如寄存器名,指令助記符,偽指令)。操作碼指令碼命令CPU要完成的操作偽指令助記符指示匯編程序要完成的操作用來(lái)定義變量,分配存儲(chǔ)單元指示程序開(kāi)始和結(jié)束等注釋用分號(hào)作為注釋的開(kāi)始用于說(shuō)明程序或語(yǔ)句的功能,以便于閱讀和理解數(shù)據(jù)項(xiàng)及表達(dá)式寄存器存儲(chǔ)器單元常量變量或標(biāo)號(hào)表達(dá)式操作數(shù)常量數(shù)字常量:沒(méi)有任何屬性的純數(shù)值。在匯編期間,它的值已能完全確定,且
5、在程序運(yùn)行中,它也不會(huì)發(fā)生變化。字符串常量:用引號(hào)引起的字符或字符串例:‘A’,’ABCD’匯編時(shí)被譯成對(duì)應(yīng)的ASCII碼41H,42H,43H,44H常數(shù)的應(yīng)用在程序中,常數(shù)主要出現(xiàn)在:1)指令語(yǔ)句源操作數(shù)中做立即數(shù),它應(yīng)與目的操作數(shù)的位數(shù)相一致,可以是8位或16位的。2)在指令語(yǔ)句中的基址加變址的尋址方式中作位移量。3)在數(shù)據(jù)定義偽指令中。例如:MOVAX,1234HMOVBX,[SI+32H]DB12H;定義一個(gè)字節(jié)數(shù)據(jù)變量變量是代表存放在某些存儲(chǔ)單元的數(shù)據(jù),這些數(shù)據(jù)在程序運(yùn)行期間隨時(shí)可以修改。為了便于對(duì)變量的訪問(wèn),它常常以變量名的形式出現(xiàn)程序中,它可以認(rèn)為是存放在數(shù)據(jù)存儲(chǔ)單
6、元的符號(hào)地址。(1)變量的定義與預(yù)置(2)數(shù)據(jù)定義偽指令變量的定義與預(yù)置定義變量就是給變量分配存儲(chǔ)單元,且對(duì)這個(gè)存儲(chǔ)單元賦予一個(gè)符號(hào)名,即變量名,同時(shí)將這些存儲(chǔ)單元預(yù)置初值。VAR-DATASEGMENTDATA1DB12HDATA2DB34HDATA3DW9876HVAR-DATAENDS變量的屬性定義變量是用數(shù)據(jù)定義偽指令DB,DW,DD等。經(jīng)過(guò)定義的變量,每個(gè)變量均有三個(gè)屬性:(1)段屬性(SEG)(2)偏移量屬性(OFFSET)(3)類屬性(TYPE)段屬性段屬性(SEG):表示變量存放在哪一個(gè)邏輯段中,即變量所在段的段基值。例如:VAR-DATASEGMENTDATA1D
7、B12HDATA2DB34HDATA3DW9876HVAR-DATAENDS三個(gè)變量都存放在VAR_DATA邏輯段中。當(dāng)在指令中要對(duì)這些變量進(jìn)行存取操作時(shí),事先要把它們所在段的段基值存放在某一個(gè)段寄存器中。偏移量屬性偏移量屬性(OFFSET):表示變量在邏輯段中離段起始點(diǎn)的字節(jié)數(shù)。例如變量DATA1的偏移量為0,而DATA2的偏移量為1,DATA3的偏移量為2。段屬性和偏移量屬性構(gòu)成了變量的邏輯地址。類屬性類屬性(TYPE):表示變量占用存儲(chǔ)單元的字節(jié)數(shù)。類屬性是由數(shù)