微機原理與接口_第1頁
微機原理與接口_第2頁
微機原理與接口_第3頁
微機原理與接口_第4頁
微機原理與接口_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

微機原理與接口課件第1頁,課件共32頁,創(chuàng)作于2023年2月計算機程序設計語言3.1程序設計語言與匯編語言機器語言、匯編語言和高級語言高級語言(HighLevelLanguage):通用,一般不要求了解結構原理。易讀,易編寫,調試,簡潔BASIC,….,VC(++)/VB/DELPHI,JAVA,C#,HTML==>機器語言(執(zhí)行)翻譯/編譯解釋程序(Interpreter)/編譯程序(Compiler)(編譯原理)C++編譯真實指令JAVA編譯Javabytecode中間代碼虛擬機指令JAVA解釋器2第2頁,課件共32頁,創(chuàng)作于2023年2月程序設計語言與匯編語言(2)匯編語言(AssemblyLanguage)面向具體機器(CPU)語言,最接近于機器語言的低級語言。借助于助記符編程,地址數(shù)據(jù)可符號化(可讀性提高),編寫、修改較方便。完整的語法,不易出錯。例:ADDAX,100(056400)JMP1000:2000(EA00200010)特點:匯編語言程序機器代碼一一對應,程序流可控,速度快,用于編制系統(tǒng)程序、實時通信/控制/處理。面向具體機器(CPU)語言,移植性差,不通用。匯編(Assemble)源程序代碼機器語言代碼(目標程序)的過程。功能:語法檢查、翻譯。匯編程序Assembler機器匯編(人工匯編)。交叉匯編—借助其它機器(如PC)匯編。

反匯編(Dis-Assemble)

機器語言代碼指令代碼(源程序),逆向工程—ReverseEngineering)機器語言二進制表示的指令和數(shù)據(jù)序列--目標代碼3第3頁,課件共32頁,創(chuàng)作于2023年2月匯編程序獲取(1)機器碼DisassembleSourcer/debuger(2)CASMCL/Fa開關;TCCB;(3)ASM編程(高級語言嵌入小匯編程序模塊)MASMTASMASM;匯編程序(MS-MASM4.0/5.06.11/6.14/6.15)ASM86(小,無宏MICRO支持)TASM5.0)匯編程序用途

程序設計語言與匯編語言(3)4第4頁,課件共32頁,創(chuàng)作于2023年2月

DATASEGMENT;定義數(shù)據(jù)段DATA1DB0F8H,60H,0ACH,74H,3BH;被加數(shù)DATA2DB0C1H,36H,9EH,0D5H,20H;加數(shù)DATAENDS;數(shù)據(jù)段結束CODESEGMENT;定義代碼段ASSUMECS:CODE,DS:DATA;告訴匯編程序段范圍START:MOVAX,DATAMOVDS,AX;初始化DSMOVCX,5;循環(huán)次數(shù)送CXMOVSI,0;置SI初值為零3.2匯編語言源程序格式段名段說明保留字標號5第5頁,課件共32頁,創(chuàng)作于2023年2月

匯編語言源程序格式(例1續(xù))

CLC;清CF標志LOOPER:MOVAL,DATA2[SI];取一個字節(jié)加數(shù)ADCDATA1[SI],AL;與被加數(shù)相加INC SI ;SI加1指向下一字節(jié)DECCX ;計數(shù)器CX減1JNZLOOPER ;不等于零,轉LOOPER

(HLT) ;停止--實際?(INT21H)CODEENDS;代碼段結束ENDSTART;源程序結束,指定起始地址標號6第6頁,課件共32頁,創(chuàng)作于2023年2月匯編語言源程序格式(例2)(PC臺式計算機在MS-DOS環(huán)境下的標準程序格式)MAINPROCFAR;MS-DOS模板語句 PUSHDSXORAX,AX;=MOVAX,0PUSHAX;保存返回指針START:MOVAX,DATAMOVDS,AX:RET;返回原DS:0000HMS-DOSMAINENDP7第7頁,課件共32頁,創(chuàng)作于2023年2月

匯編語言源程序格式(詳解1)

分段結構

指定堆棧、數(shù)據(jù)、代碼段SEGMENTENDS--(END結束?)?當前物理段(SS/CS/DS/ES)--運行/邏輯段—編程

程序語句的類型和組成基本單元:語句指令性語句CPU指令指示性語句偽操作(匯編輔助信息)語句構成:[name]Opcode/偽操作[操作數(shù)][;注釋][label:]mnemonic[operand][,operand][;comment]LOOP1:moval,DATA2[SI](指令)DATA1 DB0ffh,80h,12h(偽操作)

8第8頁,課件共32頁,創(chuàng)作于2023年2月

匯編語言源程序格式(2)

程序語句表面上組成:(專業(yè)說法)保留字(ReservedWords)

SEGMENTENDSOFFSETSIZEDBDWDDMOVPUSHADDSUBMULDIVINCDECLOOPPROCENDPCALLRETEND標識符(Identifiers字母+字母/數(shù)字/_,<32個)界符(Delimiters分隔兩部分)空格:,常數(shù)(Const.s)1000H11101000B0ABCDH注釋(Comments);分號后大段語句:.Comment@/@9第9頁,課件共32頁,創(chuàng)作于2023年2月

匯編語言源程序格式(3)--名字(name)標號(Label)

xxxx:指令的符號地址(可浮動)段、偏移量、類型((NEAR)/FAR)變量名/段名/過程名指示性語句(可浮動)無冒號;有規(guī)定段、偏移量、類型(操作數(shù))(BYTE/WORD/DWORD/QWORD/TBYTE(10))

字節(jié)字雙字四字十字節(jié)段過程變量標記名稱10第10頁,課件共32頁,創(chuàng)作于2023年2月

匯編語言源程序格式(4)

助記符和偽操作(Mnemonic&PseudoOperation)

指令助記符MOV,ADD,….

指示性操作DB,DW,SEGMENT,ENDS,ASSUME,END

操作數(shù)(Operand)單/雙/無,逗號隔開常數(shù)/寄存器/標號/變量/表達式(1)常數(shù):xxxxD/B/H/O(Q),ASCII(‘A01’)

11第11頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式操作數(shù)(1)(2)寄存器

8位:AL/AH,BH/BL,CH,CL,DH,DL16位:AX/BX/CX/DX,SI/DI/BP/SP/D/ES/CS(3)標號(少用絕對地址,多用標號維護,移植)(4)變量內存數(shù)據(jù)區(qū)名,類型B/W/DW/QW/TB(5)表達式(預編譯/匯編處理)算術運算符+-*/MOD(變量地址+/-)邏輯運算符(位)AND/OR/XOR/NOTANDAL,100001BANDAL,100001BAND1111101B12第12頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式

操作數(shù)(2)(5)表達式(續(xù))(預編譯/匯編處理)關系運算符

關系運算符有:EQ(等于),NE(不等),LT(小于),GT(大于),LE(小于或等于),GE(大于或等于)等。

參與關系運算的必須是兩個數(shù)值,或同一段中的兩個存儲單元地址,但運算結果只可能是兩個特定的數(shù)值之一:當關系不成立(假)時,結果為0;當關系成立(真)時,結果為0FFFFH。例如,MOVAX,4EQ3;關系不成立,故(AX)0MOVAX,4NE3;關系成立,故(AX)0FFFFH13第13頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式操作數(shù)(3)(5)表達式(續(xù))(預編譯/匯編處理)分析運算符和合成運算符分析運算符

用以分析提取一個存儲器操作數(shù)的屬性,如段、偏移量或類型等。OFFSET、SEG、TYPE、SIZE、LENGTH;合成運算符可規(guī)定存儲器操作數(shù)的某個屬性,例如類型。

PTR、THIS、SHORT(類似類型強制轉換)

INCWORDPTR[BX]ADDBYTEPTR[1000H],38H14第14頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式操作數(shù)(4)(5)表達式(續(xù))

分析運算符OFFSET

可以得到一個標號或變量的偏移地址(定位后已知)

MOVSI,OFFSETDATA1LEASI,DATAl

LEASI,DATA1[BX+100]

SEG

可以得到一個標號或變量的段值

MOVAX,SEGARRAYMOVDS,AXTYPE

結果=類型數(shù)值(與存儲器操作數(shù)類型屬性的對應)B-1W-2DW-4NEAR-(-1)FAR(-2)15第15頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式操作數(shù)(5)(5)表達式(續(xù))

分析運算符TYPEVARDW?;變量VAR的類型為字2ARRAYDD10DUP(?);

變量ARRAY的類型為雙字:typeARRAY=4STRDB'Thisisatest';變量STR的類型為字節(jié)1 :MOVAX,TYPEVAR;(AX)2MOVBX,TYPEARRAY;(BX)4MOVCX, TYPESTR ;(CX)116第16頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式操作數(shù)(6)(5)表達式(續(xù))分析運算符LENGTH/SIZELENGTH一個變量DUP定義的變量總數(shù)非DUP則=1(LENGTHARRAY=10)SIZE一個變量第一個DUP定義的字節(jié)總數(shù)(變量TYPE*LENGTH)非DUP則=TYPE例V1DB20DUP(?),20,100HDUP(‘A’)V2DD4000H

SIZEV1=20SIZEV2=417第17頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式操作數(shù)(7)合成運算符號PTR/THIS/HIGH/LOW/$PTR

(強制)指定MEM操作數(shù)類型,不明或強制MOVAX,[BX]INCBYTE/WORDPTR[BX]THIS(同C中UNION聯(lián)合體)

同一變量區(qū),可按不同類型訪問(BYTE/WORD/DWORD)

V1W EQU THISWORD V1B DB10DUP(?) MOVAX,(WORDPTR)V1B;強制轉換(否則Warning或Error)SHORT

–127/+128短標號JMPSHORTSLABLE18第18頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式

操作數(shù)(8)(5)表達式(續(xù))

特殊運算/運算順序段超越

CS:/ES/SS:/DS:HIGHxxxx;highmydataLOWxxxx$(當前指令地址)運算關系順序

P144表3.2先合成-分析運算優(yōu)先(1)LENGTH,SIZE,WIDTH,MASK,(),[],<>(2)(結構成員)(3)(段超越)(4)PTR,OFFSET,SEG,TYPE,THIS(5)HIGH,LOW(6)+,-(7)*/MOD,(8)SHL,SHR(9)EQ,NE,LT,LE,GT,GE(10)NOT(11)AND(12)OR,XOR(13)SHORT(最低)

(不用硬記,多用括號)19第19頁,課件共32頁,創(chuàng)作于2023年2月3.3源程序格式

偽操作命令

匯編程序的命令(定義、分配—管理)(--=CPU指令一種操作)處理器方式/數(shù)據(jù)/符號/段/過程/模塊與鏈接定義 宏處理/條件/列表/其他微操作處理器方式定義(.8086).286(C,P).586.MMX.386(C,P).686(P).K3D[.8087.80287,.80387]—配對20第20頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式

偽操作命令

數(shù)據(jù)定義(分配)

DB(字節(jié))DW(字)DD(雙字)DQ(4字/8字節(jié))DT(十字節(jié)HEX)DB30,20H,111110B,3DUP(xx/?);DB?,?DW?,?,?,LABEL(偏移量)DDLABEL;四字節(jié)

段基地址,偏移量—CS:IP指針變量);4字節(jié)數(shù)(整數(shù)變量)(12345678H/D)DT十字節(jié)HEX(如Compacted-BCD)

21第21頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式數(shù)據(jù)定義

STRUC自定義多字段組成的數(shù)據(jù)類型。(同C中struct)定義結構類型[變量名]結構名<[初值[,初值..]]>定義結構變量VS1S1;VS2S120DUP(<..>);VS3S130dup<1,2>)結構變量名.字段名(成員名)引用|BX].字段名,VS1.字段名(SIZE等仍可用) VS1.V1,[BX].V2,[BX].V1+100結構名STRUC : : 結構名ENDS例S1STRUCV1DB?V2DW?

S1ENDS22第22頁,課件共32頁,創(chuàng)作于2023年2月源程序格式符號定義名字EQU表達式(全局,唯一,不可換,匯編替換)COUNTEQU2000名字=表達式COUNT=2000(可換改)

名字LABEL類型(Byte,Word,DoubleWord,STRUC,RECORD,NEAR,F(xiàn)AR)

THIS與C中UNION相近定義標號或變量類型(下一CPU指令或DB…偽指令)例:V1WEQUTHISWORD;同V1WLABLEWORDV1BDB10,23,7AH,41H,’ABCD$’MOVAX,V1W;MOVDL,V1B23第23頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式

段定義(1)SEGMENT/ENDS邏輯段存儲定位關系段名SEGMENT

[定位類型[,組合類型[,‘類別’..]]]

PARA(節(jié)ParagraphXXXX0H)BYTE(任意)WORD(偶數(shù)地址)PAGE(頁256XXX00)四種定位類型:確定段的邊界定位(浮動――預設為常量,相對關系――LINK)段名ENDS段1段2段324第24頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式

段定義(2)SEGMENT/ENDS

SNAME

SEGMENT

[定位類型[,組合類型[,‘類別’..]]]

NONE不組合

PUBLIC多個模塊相同段名裝配合一

STACK

堆棧,同Public(

相同段名裝配合一)EXE文件裝入時SP初值=末指針+1(棧底)

COMMON

公用不同程序遇到同名時同一地址裝入,覆蓋/重疊--臨時變量,以最長為界

MEMORY

置于地址最高處,多個時取第一個,其余作為COMMON25第25頁,課件共32頁,創(chuàng)作于2023年2月SEGMENT/ENDS

SEGMENT

[定位類型[,組合類型[,‘類別’..]]]

AT表達式定位在指定段基位置AT2000H起始物理地址20000H;

類別(‘名稱’)決定裝入順序,順序裝入,相同類別連續(xù)裝入成一塊(段)

ENDS-段結束

源程序格式

段定義(3)‘X’簡化段定義(P162)MASM5.0.CODE.DATA.STACK.MODLE模式,[高級語言)26第26頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式

ASSUME說明ASSUMESR:段名[,SR:段名[,…]]

-邏輯段與物理段之間的關系(SR=CS/DS/ES/SS)直接MEM訪問時,匯編時確定變量屬于哪一個段范圍計算偏移量,必要時自動加段超越前綴。不改變段寄存器內容?。。?/p>

MOVAX,WORDMEM匯編[CS/ES/SS:]MOVAX,[3002]

未注明errorA2068:Cannotaddresswithsegementregister.人工說明(強制指定SEGREG,易錯不可取)結果=計算相對于指定段偏移量(定位類型)27第27頁,課件共32頁,創(chuàng)作于2023年2月

源程序格式過程定義過程名PROC[(NEAR)/FAR] : RET ;(自動RETF/RET)過程名 ENDP

結構化子程序(SUBROUTINE)引用:CALL過程名,(堆棧使用)MYPROCPROC:RETMYPROCENDPCALLMYPROC;28第28頁,課件共32頁,創(chuàng)作于2023年2月

源程序格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論