微機原理與接口技術(第3版)課件 第4章 匯編語言程序設計-part2_第1頁
微機原理與接口技術(第3版)課件 第4章 匯編語言程序設計-part2_第2頁
微機原理與接口技術(第3版)課件 第4章 匯編語言程序設計-part2_第3頁
微機原理與接口技術(第3版)課件 第4章 匯編語言程序設計-part2_第4頁
微機原理與接口技術(第3版)課件 第4章 匯編語言程序設計-part2_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理與接口技術第4章匯編語言程序設計目錄4.1匯編語言基礎4.2順序程序設計4.3分支程序設計4.4循環(huán)程序設計4.5DOS系統(tǒng)功能調用4.6子程序設計4.7字符串處理3包含多個段的匯編語言程序最簡單的匯編語言程序算術邏輯移位指令移位指令主要內(nèi)容4.2順序程序設計4算術邏輯移位指令移位指令最簡單的匯編語言程序順序結構指程序中的每一條指令都是按指令的排列順序執(zhí)行的程序4.2-1例4.2-1編程計算以下4個數(shù)的和,結果保存在AX寄存器0123H、0456H、0789H、0ABCHCODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND完成4個數(shù)相加4.2順序程序設計5算術邏輯移位指令移位指令最簡單的匯編語言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1SEGMENT和ENDS成對使用的一組偽指令作用是定義一個段SEGMENT說明段的開始ENDS說明段的結束。段名SEGMENT……段名ENDS4.2順序程序設計6算術邏輯移位指令移位指令最簡單的匯編語言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1ASSUME偽指令:將“SEGMENT……ENDS”定義的一個段與某個段寄存器進行關聯(lián)

CODE是代碼段4.2順序程序設計7算術邏輯移位指令移位指令最簡單的匯編語言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1END標志著一個匯編語言源程序的結束編譯器遇到END偽指令,就停止對源程序的編譯。注意ENDS和END的區(qū)別4.2順序程序設計8算術邏輯移位指令移位指令最簡單的匯編語言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1程序返回最簡單的匯編語言程序:只有1個代碼段4.2順序程序設計9包含多個段的匯編語言程序最簡單的匯編語言程序算術邏輯移位指令移位指令順序程序設計10算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODEMOVAX,0123HADDAX,0456HADDAX,0789HADDAX,0ABCHMOVAX,4C00HINT21HCODEENDSEND程序4.2-1DATA1DW0123H,0456H,0789H,0ABCH用和定義代碼段一樣的方法來定義一個數(shù)據(jù)段然后在數(shù)據(jù)段里面定義需要的數(shù)據(jù)。如果以上四個數(shù)是存儲在以DATA1為起始地址的連續(xù)內(nèi)存單元中,該如何處理呢?到哪里去找這段內(nèi)存空間?4.2順序程序設計11算術邏輯移位指令移位指令包含多個段的匯編語言程序例4.2-2計算存儲在變量DATA1中的4個字數(shù)據(jù)0123H,0456H,0789H,0ABCH的和,結果保存在累加器AX中。DATASEGMENTDATA1DW0123H,0456H,0789H,0ABCHDATAENDS數(shù)據(jù)段程序4.2-24.2順序程序設計12算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART代碼段4.2順序程序設計13算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART代碼段、數(shù)據(jù)段與相關段寄存器關聯(lián)4.2順序程序設計14算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART即源程序中的“MOVAX,DATA”1419H為數(shù)據(jù)段的段基址指令執(zhí)行之前,DS的值并不是DATA對應的數(shù)據(jù)段的段地址1419H,這說明在程序中需要對DS初始化對數(shù)據(jù)段地址的引用段名就代表段地址注意:沒有任何偽指令!偽指令由masm程序負責解釋執(zhí)行。4.2順序程序設計算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART取變量DATA1的偏移地址就是MOVBX,0000HLEA BX,DATA1即源程序中的“MOVBX,OFFSETDATA1”4.2順序程序設計16算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTARTSTART處是要執(zhí)行的第一條指令,即程序的入口地址。END的另一作用就是通知編譯器程序的入口在什么地方。程序執(zhí)行的第一條指令第1條指令的地址4.2順序程序設計17算術邏輯移位指令移位指令包含多個段的匯編語言程序CODESEGMENTASSUMECS:CODE,DS:DATA

MOVAX,DATAMOVDS,AXSTART:MOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]MOVAX,4C00HINT 21HCODEENDSENDSTART程序執(zhí)行的第一條指令這兩條指令就不會被執(zhí)行START處是要執(zhí)行的第一條指令,即程序的入口地址。END的另一作用就是通知編譯器程序的入口在什么地方。4.2順序程序設計18算術邏輯移位指令移位指令包含多個段的匯編語言程序觀察Data段中定義的DATA11419:00001419:00011419:00021419:00031419:00041419:00051419:00061419:00071419:00081419:00091419:000A…230156048907BC0A00000…DATA14.2順序程序設計19算術邏輯移位指令移位指令包含多個段的匯編語言程序觀察程序的分步執(zhí)行:MOVBX,OFFSETDATA1裝入數(shù)據(jù)段的段基址到DS4.2順序程序設計20算術邏輯移位指令移位指令包含多個段的匯編語言程序觀察程序的分步執(zhí)行:4.2順序程序設計21算術邏輯移位指令移位指令包含多個段的匯編語言程序觀察程序的分步執(zhí)行:四個數(shù)相加的結果4.2順序程序設計22算術邏輯移位指令移位指令包含多個段的匯編語言程序例(補充)

已知0~9的平方值連續(xù)存儲在以SQTAB開始的存儲器區(qū)域中,求SUR單元內(nèi)容X的平方值,并放在DIS單元中。

DATA SEGMENT SUR DB 4 DIS DB ? SQTABDB 0,1,4,9,16,25,36,49,64,81DATA ENDSSTACKSEGMENT DB DUP100(?) TOP LABELWORD STACKENDS堆棧段;堆棧段長度為100字節(jié)Stack:00HStack:63H堆棧段100BTOP;TOP指示堆棧的棧底4.2順序程序設計23算術邏輯移位指令移位指令包含多個段的匯編語言程序例(補充)

已知0~9的平方值連續(xù)存儲在以SQTAB開始的存儲器區(qū)域中,求SUR單元內(nèi)容X的平方值,并放在DIS單元中。

CODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVAX,STACKMOVSS,AXMOVSP,OFFSETTOP送SS初值設定棧頂指針Stack:00HStack:63H堆棧段100BTOPSP程序4.2-3空棧的棧頂和棧底重合4.2順序程序設計24算術邏輯移位指令移位指令包含多個段的匯編語言程序例(補充)

已知0~9的平方值連續(xù)存儲在以SQTAB開始的存儲器區(qū)域中,求SUR單元內(nèi)容X的平方值,并放在DIS單元中。

;查表求平方

LEA BX,SQTAB

MOV AL,SUR

MOV AH,0 ADD BX,AX MOV AL,[BX] MOV DIS,AL MOV AX,4C00H INT 21H …….XLAT…0149162536496481…SQTABBXBX=BX+AXAL=SUR=4AL16DIS16AX=0004H可用“MOVBX,OFFSETSQTAB”4.2順序程序設計目錄4.1匯編語言基礎4.2順序程序設計4.3分支程序設計4.4循環(huán)程序設計4.5DOS系統(tǒng)功能調用4.6子程序設計4.7字符串處理26算術邏輯移位指令移位指令常見分支結構單分支結構雙分支結構多分支結構條件分支1分支2YN條件ii=1分支n分支1分支2i=2i=n……條件分支YN4.3分支程序設計27分支程序舉例轉移指令算術邏輯移位指令移位指令主要內(nèi)容4.3分支程序設計28算術邏輯移位指令移位指令轉移類指令8086/8088CPU的轉移行為(從轉移的距離):段間轉移同時修改CS和IP段內(nèi)轉移只修改IP短轉移IP修改范圍?128~127字節(jié)近轉移?32768~32767字節(jié)8086/8088CPU的轉移行為(是否帶條件):無條件有條件4.3分支程序設計29算術邏輯移位指令移位指令無條件轉移指令JMP

類型方式尋址目標指令舉例段內(nèi)轉移段間轉移直接立即短轉移(8位)JMPSHORTS直接立即近轉移(16位)JMPNEARPTRN間接寄存器(16位)JMPBX間接存儲器(16位)JMPWORDPTR[BX+5]直接立即轉移(32位)JMPFARPTRF間接存儲器(32位)JMPDWORDPTR[DI]

4.3分支程序設計30算術邏輯移位指令移位指令無條件轉移指令JMP格式:JMPshort

標號段內(nèi)短轉移功能:“short”說明進行的是短轉移,“標號”指明了要轉

移的目的地。段內(nèi)短轉移,對IP的修改范圍是-128~127字節(jié)

IP←IP+8位位移補碼表示4.3分支程序設計31算術邏輯移位指令移位指令無條件轉移指令JMPCODESEGMENTASSUMECS:CODESTART:MOVAX,8

JMPSHORTS INCAXS:ADDAX,1

CODEENDSENDSTART程序4.3-18位位移=標號處的地址-JMP指令后的第一個字節(jié)的地址;4.3分支程序設計32算術邏輯移位指令移位指令無條件轉移指令JMP不理解計算原理沒關系,會用就行

JMPSHORTSINCAXS:ADDAX,18位位移=0006H-0005H=1該指令執(zhí)行后IP=0005H+1=0006H01H是偏移量DEBUG調試結果:4.3分支程序設計33算術邏輯移位指令移位指令無條件轉移指令JMP格式:JMPNEARPTR標號段內(nèi)近轉移功能:IP←IP+16位位移。段內(nèi)近轉移,對IP的修改范圍是?32768~32767字節(jié)16位位移=標號處的地址?JMP指令后的第一個字節(jié)的地址;4.3分支程序設計34格式:JMPFARPTR標號段間遠(直接)轉移功能:CS←標號所在段的段地址;IP←標號在段中的偏移地址JMPFARPTRPROG_F例:執(zhí)行后IP=080AH,CS=3500H,程序轉移到3500:080AH處執(zhí)行設標號PROG_F所在段的基地址=3500H,偏移地址=080AH算術邏輯移位指令移位指令無條件轉移指令JMP4.3分支程序設計35算術邏輯移位指令移位指令無條件轉移指令JMP格式:JMPWORDPTR內(nèi)存單元地址段內(nèi)間接轉移功能:內(nèi)存單元地址處存放一個字,以其作為目的偏移地址,實現(xiàn)段內(nèi)轉移。JMP

WORDPTR[BX]例:執(zhí)行后IP=0123HMOV

AX,0123HMOV

[BX],AX3.1節(jié)的后5種尋址方式

…←BX23H01HIP常用于構造跳轉表,實現(xiàn)多分支結構程序(見教材例4.3-4)4.3分支程序設計36算術邏輯移位指令移位指令無條件轉移指令JMP4.3分支程序設計格式:JMPDWORDPTR內(nèi)存單元地址段間間接轉移功能:在內(nèi)存單元地址處存放兩個字,以其作為目的段地址和偏移地址,實現(xiàn)段間轉移。JMP

DWORDPTR[BX]例:執(zhí)行后IP=1512H,CS=0123HMOVWORDPTR[BX],1512HMOVWORDPTR[BX+2],0123H3.1節(jié)的后5種尋址方式

←BX12H15HIP23H01HCS←BX+237算術邏輯移位指令移位指令條件轉移指令:分支轉移到標號處標志條件真假:立即執(zhí)行緊跟在條件轉移指令之后的指令

JCond

標號條件轉移指令都是短轉移尋址方式是位移量為8位的相對尋址方式。IP的修改范圍是-128~127if(Cond)JMPshort標號4.3分支程序設計38算術邏輯移位指令移位指令條件轉移指令指令條件說明測試標志JZ結果為零ZF=1JNZ結果不為零ZF=0JS結果為負SF=1JNS結果為正SF=0JP/JPE結果中1的個數(shù)為偶數(shù)PF=1JNP/JNPE結果中1的個數(shù)為奇數(shù)PF=0JO結果溢出OF=1JNO結果無溢出OF=0JC有進位CF=1JNC無進位CF=0P17標志寄存器基于特定標志值4.3分支程序設計39算術邏輯移位指令移位指令條件轉移指令基于特定標志值舉例說明功能:當ZF=1時,IP←IP+8位位移。當ZF≠1時,什么也不做,程序向下執(zhí)行。if(ZF==1)JMPshort標號格式:JZ

標號 CMPAL,0

JZ Zero ;ZF=1跳轉 MOVBL,1 ;ZF=0執(zhí)行此語句

Zero:4.3分支程序設計40算術邏輯移位指令移位指令條件轉移指令基于恒等性比較指令條件說明JE相等則跳轉JNE不相等則跳轉JCXZCX=0則跳轉等價于JZ等價于JNZ4.3分支程序設計41算術邏輯移位指令移位指令條件轉移指令基于無符號數(shù)比較的跳轉指令指令條件說明JB/JNAE結果低于/不高于或等于JNB/JAE結果不低于/高于或等于JBE/JNA結果低于等于/不高于JNBE/JA結果不低于不等于/高于B-BelowA-AboveE-Equal基于有號數(shù)比較的跳轉指令指令條件說明JL/JNGE小于/不大等于JNL/JGE不小于/大等于JLE/JNG小等于/不大于JNLE/JG不小等于/大于L-LessG-GreaterE-Equal4.3分支程序設計42算術邏輯移位指令移位指令條件轉移指令例4.3-1閱讀下面程序段,說明程序段執(zhí)行后轉移到哪里?MOVAL,7FHCMPAL,80HJAIsAbove

JGIsGreater;127或者+127;128或者?128;不跳轉,因為127不高于128;跳轉,因為+127大于?128無符號有符號4.3分支程序設計43分支程序舉例轉移指令算術邏輯移位指令移位指令主要內(nèi)容4.3分支程序設計44算術邏輯移位指令移位指令單分支結構DATASEGMENTXDW3456HDATAENDS;數(shù)據(jù)段定義變量X存放數(shù)例4.3-2求某整數(shù)X的絕對值,并送回原處,即X=X,X>=0

X,X<0程序4.3-2分析:知道X的正負獲取X的符號位

SF=?

JS/JNS4.3分支程序設計45算術邏輯移位指令移位指令單分支結構例4.3-2求某整數(shù)X的絕對值,并送回原處,即X=X,X>=0

X,X<0

……MOVAX,XANDAX,AXJNSENDIFNEGAXMOVX,AXENDIF:…………;與運算后取SF;如果SF=0,X為正數(shù),不作處理;如果SF=1,X為負數(shù),對X求負MOV指令不影響標志位因此用AND指令獲得AX的符號位思考:除了AND指令,是否有其他指令能實現(xiàn)相同目的(不改變操作數(shù)的值,只影響標志位)?思考:不改變操作數(shù)的值,只影響標志位4.3分支程序設計46算術邏輯移位指令移位指令雙分支結構例4.3-3試編寫程序段,判斷一個非零符號數(shù)的正負。程序4.3-3START:…… MOVAL,X ORAL,AL JNSPLUS;X為正數(shù),則轉PLUS MOVBL,0FFH;X為負數(shù),則-1送BL JMPENDIFPLUS:MOVBL,1ENDIF:……MOV指令不影響標志位,OR指令影響相關標志位,如SF,ZF等思考:JMP指令的作用是什么?如果少了該指令,會出現(xiàn)什么問題?4.3分支程序設計47算術邏輯移位指令移位指令多分支結構例4.3-4若有一組選項,當N選擇不同值時,做相應處理。該組選擇項及其對應的處理為:N=1時,顯示信息(DISPL);N=2時,傳送信息(TRAN);N=3時,處理信息(PROCE)N=4時,打印信息(PRINT)N=5時,結束程序(EXIT)假設N的值由鍵盤輸入。4.3分支程序設計48算術邏輯移位指令移位指令多分支結構DATA SEGMENT……DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXDO: MOV AH,01H ;從鍵盤接收收用戶輸入的數(shù)字選項

INT 21H SUB AL,30H ;將數(shù)字選項的ASCII碼轉換為數(shù)字

CMP AL,01 JE DISPL

方法1

:多次使用比較指令構成分支程序4.3-44.3分支程序設計49算術邏輯移位指令移位指令多分支結構方法1

:多次使用比較指令構成分支程序4.3-44.3分支程序設計

CMP AL,02 JE TRAN CMP AL,03 JE PROCE CMP AL,04 JE PRIN CMP AL,05 JE EXIT JMP DO ;輸入的不是'1'~'5'則接收下一個輸入字符DISPL: ...... JMP DOTRAN: .....

JMP DOPROCE:..... JMP DOPRIN: ..... JMP DOEXIT: .....思考:多次使用比較指令構成多分支結構的程序設計,缺點是什么50算術邏輯移位指令移位指令多分支結構跳轉表中存放了每個分支程序的入口地址。分支入口地址在表中的地址=跳轉表首地址+偏移地址DATA SEGMENT;偏移地址JADTDWDISPL ;

00H DWTRAN ;02H DWPROCE ;04H DWPRIN ;06H DWEXIT ;08HDATA ENDS輸入的編號12345對應關系2×(1?1)2×(2?1)2×(3?1)2×(4?1)2×(5?1)偏移地址=2×(編號?1)跳轉表“JMPJADT[偏移地址]”可實現(xiàn)跳轉方法2

:跳轉表法=2×編號?24.3分支程序設計4.3分支程序設計51算術邏輯移位指令多分支結構DATA SEGMENTJADTDWDISPL ;跳轉表00H DWTRAN ;02H DWPROCE ;04H DWPRIN ;06H DWEXIT ;08HDATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXDO: MOV AH,01

INT 21H SUB AL,30H CMP AL,01 JB DO CMP AL,05

JA DO SHL AL,1 ;AL*2

MOVAH,0

;AH←0

MOV DI,AX JMP JADT[DI-2]DISPL:…… JMPDOTRAN: …… JMPDOPROCE: ...... JMPDOPRIN:…… JMPDOEXIT: MOVAH,4CH INT21HCODE ENDS ENDSTART從鍵盤接收輸入的數(shù)字字符,其ASCII碼存入AL(詳見4.5節(jié))ASCII碼轉換成數(shù)值程序4.3-52N-2目錄4.1匯編語言基礎4.2順序程序設計4.3分支程序設計4.4循環(huán)程序設計4.5DOS系統(tǒng)功能調用4.6子程序設計4.7字符串處理53算術邏輯移位指令移位指令主要內(nèi)容4.4循環(huán)程序設計循環(huán)程序的基本結構循環(huán)指令循環(huán)程序舉例循環(huán)程序的一般結構為循環(huán)做準備,包括設定循環(huán)體部分用到的變量或寄存器的初始值,設置循環(huán)次數(shù)等循環(huán)程序的核心。重復操作就位于循環(huán)體內(nèi)出口部分的作用是判斷循環(huán)是否結束或者繼續(xù)開始初始化部分循環(huán)體出口判定Y結束N4.4循環(huán)程序設計循環(huán)程序的一般結構程序4.2-2例4.4-1利用4.3節(jié)所學的條件轉移指令,把4個數(shù)累加求和的程序4.2-2改寫成循環(huán)結構的形式。CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETDATA1MOVAX,0ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]ADDBX,2ADDAX,[BX]

重復4次程序4.4-1

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTART初始化部分循環(huán)體出口判定思考:JNZ還可以替換為哪些指令?4.4循環(huán)程序設計DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTART循環(huán)程序的一般結構初始化部分DATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=04.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=0循環(huán)體4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=0123H循環(huán)體4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=4AX=0123H循環(huán)體4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0123H循環(huán)體4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0123H出口判定ZF=0,即上一步計算DECCX的結果不為04.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0123H+4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0579H+4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…BXCX=3AX=0579H4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…CX=2AX=0579HBX4.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA

MOVBX,OFFSETDATA1;BX指向DATA1MOVAX,0

MOVCX,4;設置循環(huán)次數(shù)AGAIN:ADDAX,[BX]ADDBX,2

DECCXJNZAGAINMOVAX,4C00HINT21HCODEENDSENDSTARTDATA123H01H56H04H89H07HBCH0AH…CX=0AX=17BEHBXZF=1,即上一步計算DECCX的結果為04.4循環(huán)程序設計循環(huán)程序的一般結構DATA SEGMENT DATA1DW 0123H,0456H,0789H,0ABCHDATA

溫馨提示

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

最新文檔

評論

0/150

提交評論