• /  45
  • 下載費用: 19.9積分  

微機原理及應用-ch7.ppt

'微機原理及應用-ch7.ppt'
第七章 匯編語言程序設計的基本方法和技巧7.1 概述7.2 偽指令和宏指令7.3 8086匯編語言程序設計的基本語法7.4 匯編語言程序設計的基本方法和技巧7.7 IBM-PC-DOS系統的功能調用可執行目標文件:“.EXE”目標代碼文件:“.OBJ”,沒有確定的物理地址,“.ASM”若有錯,給出信息源程序文件:“.ASM” “.asm” ——編輯edit匯編得到結果,觀察結果是否正確,錯誤鏈接若干.OBJ調試MS-DOS下7.1 概述7.2 偽指令和宏指令格式:[名字] 定義符 [參數1] [;注釋]一、偽指令語句無冒號作用:指導匯編程序進行匯編,不產生目標代碼,不占用內存功能:提供如下信息:如何分段,段的定義,段間關系,模塊定義,模塊間關系,數據定義,開始匯編,結束匯編不可缺省常數、字符串、常量名、變量名,標號,專用符號1. 符號定義偽指令等值語句 符號名 EQU 表達式功能:為一個表達式賦予一個符號名表達式類型:常數或數值,地址,變量、標號、寄存器、指令助記符e.g. COUNT EQU 5 NUM EQU COUNT+5e.g. ADDR EQU DS:[DI+7]e.g. LABLE EQU START+BET CNT EQU BX CBD EQU SUB注:EQU定義的符號名不能被重新定義等號語句 符號名 = 表達式e.g. NUM = 6 … NUM = NUM+2注:與EQU區別在于符號名可以重新定義2. 數據定義偽指令 數據定義語句 符號名 Dn 表達式DB、DW、DD、DQ、DT字節、字、雙字、4字、5字的變量。 (1) 數值常數:十進制、八進制、十六進制、二進制等,缺省形式是十進制;(2) 字符常量,用單引號括起來,被存儲的是該字符的ASCII碼;(3) 符號常量,必須是預先已定義的符號;(4) 符號“?”,表示預留空間,內容不定; 表達式類型: 數據復制語句 n DUP(表達式)重復的次數重復的內容e.g. 定義賦初值的變量 xx DB 1, -1, 0fcH yy DW 1, -1, 0fcH zz DD 1,- 1, 0fcH注意:(1)DB定義的數據,每個數據元素占據1個存儲單元; DW定義的數據,每個數據元素占據2個存儲單元;(2)字數據存儲時,低字節存儲在低地址單元中,高字節存儲在高地址單元中;e.g. 定義字符串變量( 只能用DB定義 ) str1 DB ' TsingHua ' str2 DB 'INPUT:' , 0dH , 0aH ,'$'注意:3個及其以上的字符,只能用DB定義str1 DW ‘abcd’ ;錯str2 DD ‘abcd’;錯str1 DW ‘ab’,‘cd’;對,每組字符串中前一字符作高字節,后一字符作低字節。str2 DD ‘ab’;對,前一字符存放于第二字節,后一字符存放于第一字節,兩個高字節存放00H。str1str25473696e67487561494e5055543a0d0a24‘T’‘s’‘i’‘n’‘g’‘H’‘u’‘a’‘I’‘N’‘P’‘U’‘T’‘:’0dH0aH‘$’e.g. 利用DW偽指令可存放偏移地址,DD偽指令可存放偏移地址和段地址 XX DW OFFSETX LIST DD LABEL OFFSETX為XX在其段內的偏移地址LABEL為雙字,一字為偏移地址,一字為段地址e.g. 表達式中出現‘?’,分配并保留存儲空間 ABC DB ?, ? DEF DW ?, 50, ? ----32H00H--ABCDEFe.g. 數據復制 D1 DB 3 DUP(11, ?) D2 DW 2 DUP(4, ?) D3 DB 2 DUP(‘AB’, 2, DUP(8))0BH-0BH-0BH-D104H00H--04H00H--D241H42H08H08H41H42H08H08HD33. 段定義偽指令段名 SEGMENT [定位類型] [組合類型] [‘類別’] …段名 ENDS [定位類型] 說明段的起始地址應有怎樣的邊界值BYTE:**** **** **** **** ****B,即段可以從任何地址開始;WORD: **** **** **** **** ***0B,即段的起始地址必須為偶地址;PARA: **** **** **** **** 0000B,即段從節邊界開始,每16個字節為1小段,所以,其起始地址必為16的倍數。PAGE: **** **** **** 0000 0000B,即段從頁邊界開始,每256個字節為1頁,所以,其起始地址必為256的倍數。 [組合類型]說明程序連接時的段合并方法 PUBLIC:將同類別名段組裝在一起形成一個邏輯段;STACK: 與PUBLIC一樣,只用于堆棧段。在匯編及連接后,系統自動為SS及SP分配值,在可執行程序中,SP初值指向棧底。COMMON:同名段從同一個內存地址開始裝入。所以,各個邏輯段將發生覆蓋。連接以后,該段長度取決于同名段中最長 的那個,而內容有效的是最后裝入的那個。MEMORY:與PUBLIC同義,只不過MEMORY定義的段裝在所有同名段的最后。若連接時出現多個MEMORY,則最先遇到的段按組合類型MEMORY處理,其他段組合類型按PUBLIC處理。AT exp:段地址為表達式exp的值(長度為16位)。此項不能用于代碼段。e.g. AT 7000H ;定位的段地址為7000H,不用于代碼段[‘類別’]:不能與程序中變量、標號和其它符號名相同。匯編程序鏈接時只使同類別的段發生關聯,并組成段組的名字,如‘STACK’,‘CODE’。 4. 段寄存器說明偽指令ASSUME 段寄存器名:段名[,段寄存器名:段名…] e.g. ASSUME DS:DSEG,CS:CSEG,ES:ESEG,SS:SESGe.g. ASSUME CS:CODE,DS:DATA,ES:DATA說明:該偽指令只是指示各邏輯段使用段寄存器的情況,并沒有對段寄存器的內容進行賦值。DS、ES的值必須在程序段中用指令語句進行賦值,而CS、SS由系統負責設置,程序中也可對SS 進行賦值,但不允許對CS賦值。 例 用程序實現 1234H + 5678H data SEGMENT value DW 1234H, 5678H result DW ? data ENDS code SEGMENT ASSUME CS:code, DS:data start: MOV AX。省略部分。型,規定它所定義的符號名和相鄰的下一個語句的符號名具有相同的物理地址 e.g. LABC EQU THIS BYTE LABD DW 1357H, 2468H MOV AL, LABC ;(AL)=57H MOV AX, LABD+1 ;(AX)=6813H③ SHORT 標號 ;指出JMP指令的轉向地址是在下一條指令的±127個字節范圍內(5) 分離運算符① LOW 表達式 ;取低字節 ② HIGH 表達式 ;取高字節e.g. SSY=1234H, 則 MOV AL, LOW 5678H ; (AL)=78H MOV AH, HIGH SSY ; (AH)=12H7.4 匯編語言程序設計的基本方法和技巧匯編語言的程序設計步驟如下:1.建立數學模型;2.選擇算法;3.繪制流程圖;4.分配存儲空間和工作單元;5.根據流程圖編制程序;6.上機調試程序。1. 順序程序設計例 從標號為ADD-BUF的存儲單元開始連續存放著兩個單字節數,將兩數相加,結果送到SUM-BUF存儲單元中(不考慮進位)。 開 始 AH←(ADD-BUF)AH←AH+(ADD-BUF+1) (SUM-BUF)←AH 結束 DATASEGMENTADD-BUFDB47H,6AHSUM-BUFDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,ADD-BUFADDAH,ADD-BUF+1MOVSUM-BUF,AHCODEENDSENDSTART2. 分支程序設計選擇分支 簡單分支 多分支 例 比較兩個一字節無符號數X1和X2的大小,把大數存入MAX單元。分析:比較兩個無符號數,可將兩數相減,然后根據CF標志位來判斷大小。 DATASEGMENTSOURCEDBX1, X2MAXDB?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMOVAX,DATAMOVDS,AXMOVAL,SOURSE;AL←X1CMPAL,SOURSE+1;X1-X2JNCBRANCH;若X1>X2,轉BRANCHMOVAL,SOURSE+1;否則,AL←X2BRANCH:MOVMAX,AL;大數送MAX單元CODEENDSEND3. 循環程序設計WHILE-DO型循環圖 REPEAT-UNTIL型循環圖 (1)初始化部分 這是循環的準備部分,為程序操作、地址指針、循環計數、結束條件等設置初始值。(2)循環體,包括以下3個部分: 循環工作部分------這是循環程序的主體,完成程序的基本操作,循環多少次,這部分語句就執行多少次。 循環修改部分-----修改循環工作部分的變量地址等,這保證每次重復時,參加執行的數據能發生有規律的變化。 循環控制部分-----保證循環條件滿足時進入循環;循環結束條件不滿足時,退出循環,執行循環體外的后續語句。(3)循環結束部分 完成循環結束后的處理,如數據分析、結果的存放等。 例 從XX單元開始的10個連續單元中存放有10個無符號數,從中找出最大者送入YY單元。 分析:根據題意,把第一個數先送入AL,將AL中的數與后面的9個數逐個比較,如果AL中的數較小,則兩數交換位置,如果AL中的數大于或等于相比較的數,則兩數位置不變,在比較過程中,AL中始終保持較大的數,比較9次,則最大者必在AL中,最后把AL中的數送入YY單元。循環工作部分循環修改部分循環控制部分循環修改部分初始化部分循環結束部分DATASEGMENTXXDB73, 59, 61, 45, 8l, 107, 37, 25, 14, 64YYDB?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XXMOVBX,OFFSET XXMOVCX,9LOOP1:INCBXCMPAL,[BX]JAELOOP2MOVAL,[BX]LOOP2:DECCXJNZLOOP1MOVYY, ALMOVAH, 4CHINT21HCODEENDSENDSTART7.7 IBM-PC-DOS系統的功能調用一、調用方法及注意問題 PC-DOS提供了87個子程序供用戶調用,編號為0~57H(功能號)實現對存儲器和I/O設備的管理1. DOS功能調用的方法DOS系統功能調用是一種內部中斷方式,它是通過INT 21H指令進入功能調用,再通過功能號進入具體子程序。 需要三個語句:① 將入口參數送指定寄存器 ② 將功能號(0~57H)送AH寄存器 ③ 使用內部中斷指令:INT 21H2. 注意問題沒有入口參數的子程序,只需要后兩條指令子程序調用結束的時候,出口參數放寄存器或在顯示器上顯示出來從鍵盤輸入的字符自動轉換為ASCII碼需要在屏幕上顯示的字符要在程序中轉換為ASCII碼二、常用DOS功能調用 鍵盤輸入(1號調用)功能號 01H,無入口參數MOV AH,01HINT 21H2. 單字符顯示輸出(2號調用)功能號 02H入口參數 DL=待顯示字符的ASCII碼該功能從標準輸出設備顯示器上輸出顯示一個字符。如顯示字母“A”:MOV DL,‘A’MOV AH,02HINT 21H3. 打印輸出字符(5號調用)功能號 05H入口參數:DL=待打印字符的ASCII碼例:打印數字9MOV DL,‘9’MOV AH,05HINT 21H4.終止程序,返回DOS(0號調用)功能號 00H,無入口參數該功能退出用戶程序并返回操作系統。MOV AH,00HINT 21H5.過程終止,返回DOS(4CH號調用)功能號 4CH,無入口參數該功能結束當前的功能并返回操作系統。MOV AH,4CHINT 21H6. 字符串顯示輸出(9號調用)功能號 09H入口參數:DS:DX指向字符串的首地址該功能完成在標準輸出設備顯示器上輸出顯示一字符串,該字符串必須以字符“$”(24H)為結束標志,但“$”字符不顯示。e.g. 在屏幕上顯示“OK” ABC DB ‘OK$’ ;字符串以“$”字符做結束標志,但不顯示 MOV DX, SEG ABC ;將ABC段基址送DX MOV DS, DX ;段基址送DS MOV DX, OFFSET ABC ;將ABC段內偏移量送DX MOV AH, 9 INT 21H作業7-3、7-7、7-8
關 鍵 詞:
ch7 ch 微機 原理 應用
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:微機原理及應用-ch7.ppt
鏈接地址: http://www.476824.live/p-51497127.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 1分快3是不是国家发行 北京pk10怎么研究走势 福建体彩31选7几点开奖时间 甘肃11选5今日预测号码 福彩17500cm乐彩网 欧洲秒速赛车开奖查询 股票配资平台.一直牛 辽宁省快乐12前三组选40期 股融贷配资 广西快三计划是真的吗