匯編語言例題_第1頁
匯編語言例題_第2頁
匯編語言例題_第3頁
匯編語言例題_第4頁
匯編語言例題_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4.3

8086/8088匯編語言程序設(shè)計基本方法程序設(shè)計步驟:1.

分析問題,抽象出數(shù)學(xué)模型;2.

確定實現(xiàn)數(shù)學(xué)模型的算式;3.

繪制描述程序的流程圖(包括確定內(nèi)存單元和分配

寄存器);4.

編寫源程序;5.

上機(jī)運(yùn)行調(diào)試。順序程序結(jié)構(gòu)

一般語句條件程序結(jié)構(gòu)

Y

N

If

else

語句分支程序結(jié)構(gòu)

..

Switch

語句4.3

8086/8088匯編語言程序設(shè)計基本方法程序的基本結(jié)構(gòu)循環(huán)控制結(jié)構(gòu)

N

Y

while

語句循環(huán)控制結(jié)構(gòu)

N

Y

do

--while

語句4.3

8086/8088匯編語言程序設(shè)計基本方法程序的基本結(jié)構(gòu)???順序程序設(shè)計

指令指針

IP

值線性增加,IP

=

IP

+

1條件程序設(shè)計

IP

值受標(biāo)志位的影響而跳變

影響標(biāo)志的指令

CMP、TEST、JXX循環(huán)程序設(shè)計

IP

值受計數(shù)器

CX

中的值不為零而循環(huán)

影響標(biāo)志的指令

DEC4.3

8086/8088匯編語言程序設(shè)計基本方法基本程序設(shè)計堆棧段數(shù)據(jù)段代碼段DEBUG直接編程初始化輸

入運(yùn)算處理轉(zhuǎn)

換輸

出返回DOS數(shù)值運(yùn)算非數(shù)值運(yùn)算4.3

8086/8088匯編語言程序設(shè)計基本方法程序的層次模塊結(jié)構(gòu)

源程序4.3

8086/8088匯編語言程序設(shè)計基本方法例

:程序輸出顯示:“

Welcome

!”,流程描述如下。定義堆棧段

定義數(shù)據(jù)段源程序模塊結(jié)束指示段寄存器

初始化

顯示輸出字符串定義代碼段自動返回

DOSSTACKSSEGMENT

STACK

DWSTACKS128

DUP(?)ENDSDATAS

SEGMENTSTRING

DB‘Welcome!’,13h,10h,’$’DATAS

ENDSCODES

SEGMENT

ASSUME

CS:CODE,DS:DATASSTART:

MOV

AX,

DATAS

MOV

DS,

AXLEA

DX,

STRINGMOV

AH,

09HINT

21HMOV

AX,

4C00HINT

21HCODES

ENDS

ENDSTART4.3

8086/8088匯編語言程序設(shè)計基本方法堆棧數(shù)據(jù)代碼源程序模塊結(jié)束例1:編程計算W=X+Y+24-Z。其中變量X、Y、Z均為32位數(shù)。4.3.1

順序結(jié)構(gòu)程序DATA

SEGMENT

X

DW

19,

86

Y

DW

3,

25

Z

DW

1987,

325

W

DW

2DUP(?)DATA

ENDSCODE

SEGMENT

ASSUME

CS:CODE,

DS:DATASTART:MOV

AX,

DATAMOV

DS,

AX

MOV

AX,

X

MOV

DX,

X+2ADD

AX,

YADC

DX,

Y+2ADD

AX,

24ADC

DX,

0SUB

AX,

ZSBB

DX,

Z+2MOV

W,

AXMOV

W+2,

DX

MOV

AH,

4CH

INT

21HCODE

ENDS

END

START例2:用變量D1及D2表示的兩個8字節(jié)無符號數(shù)相加。4.3.1

順序結(jié)構(gòu)程序兩數(shù)之和按從高到低依次放在SI,BX,CX,DX中。

DATA

SEGMENT

D1

DB

12H,34H,56H,78H,9AH,0ABH,0BCH,0CDH

D2

DB

0CDH,0BCH,0ABH,9AH,78H,56H,34H,12H

DATA

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,

DS:DATABG:MOV

AX,DATA;給DS賦段值MOV

DS,AX4.3.1

順序結(jié)構(gòu)程序

;將D1表示的偏移地址送DI;取操作數(shù)到寄存器中

;將D2表示的偏移地址送DI

LEA

DI,D1

MOV

DX,[DI]

MOV

CX,[DI+2]

MOV

BX,[DI+4]

MOV

SI,[DI+6]

LEA

DI,D2

ADD

DX,[DI]

ADC

CX,[DI+2]

ADC

BX,[DI+4]

ADC

SI,[DI+6]

MOV

AH,4CH

INT

21HCODE

ENDS

END

BGY

=

?

0例3:符號函數(shù)4.3.2

分支結(jié)構(gòu)程序??

1???1X

>

0

X

=

0

X

<

0設(shè)X為8位有符號數(shù)。

4.3.2

分支結(jié)構(gòu)程序DATA

SEGMENT

X

DB

-18

Y

DB

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATASTART:

MOV

AX,

DATAMOV

DS,

AXMOV

AL,

XCMP

AL,

0JGE

BIGRMOV

AL,

-1JMP

STOPBIGR:JE

STOPSTOP:MOV

AL,

1MOV

Y,

ALCODE

MOV

AH,

4CH

INT

21H

ENDSEND

START例4:比較變量D1和D2表示的兩個有符號字?jǐn)?shù)大小,將其中較大數(shù)據(jù)放在BX寄存器中。4.3.2

分支結(jié)構(gòu)程序開始D1

BX結(jié)束BX≥D2?

Y

ND2

BXBEGIN:MOV

AX,

DATAMOV

DS,

AXMOV

BX,

D1CMP

BX,

D2JGE

NEXTMOV

BX,

D2;給DS賦段值

;若D1≥D2,則不交換,轉(zhuǎn)NEXT

;若D1<D2,則交換NEXT:MOV

AH,

4CH

INT

21HCODE

ENDSEND

BEGIN4.3.2

分支結(jié)構(gòu)程序DATASEGMENT;補(bǔ)碼為FF85H;補(bǔ)碼為FF88H

D1

D2DATA

DW

-123H

DW

-120HENDSCODE

SEGMENT

ASSUME

CS:CODE,DS:DATA例5:已知X、Y、Z為三個無符號16位二進(jìn)制數(shù),求三者中最大值,

送MAX單元。4.3.2

分支結(jié)構(gòu)程序4.3.2

分支結(jié)構(gòu)程序DATA

SEGMENTX

DW

180Y

DW

850Z

DW

350MAX

DW

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATASTART:MOV

AX,

DATAMOV

DS,

AXMOV

AX,

XCMP

AX,

YJAE

XGYMOV

AX,

YXGY:CMP

AX,

ZJAE

GMAXMOV

AX,

ZGMAX:MOV

MAX,

AX

MOV

AH,

4CH

INT

21HCODE

ENDS

END

START4.3.2

分支結(jié)構(gòu)程序例6:已知X、Y、Z為三個帶符號8位二進(jìn)制數(shù),

求三者中中間值,送ARV單元。

開始

X

ALX≤Y?Y

ALAL

RV

結(jié)束YNX≤Z?NX≥Z?Y

ALNALYYY≥Z?

YY≥Z?

Y

NALN4.3.2

分支結(jié)構(gòu)程序DATA

SEGMENTX

DB

-5

Y

DB

4

Z

DB

6

ARV

DB

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,

DS:DATASTART:MOV

AX,

DATAMOV

DS,

AXMOV

AL,

XCMP

AL,

YJL

XLYCMP

AL,

ZJLE

MARVMOV

AL,

YCMP

AL,

ZXLY:JGE

MARVMOV

AL,

ZJMP

MARV

CMP

AL,

ZJGE

MARVMOV

AL,

YCMP

AL,

ZJLE

MARVMOV

AL,

ZMARV:MOV

ARV,

AL

MOV

AH,

4CH

INT

21HCODE

ENDSEND

START4.3.3

循環(huán)結(jié)構(gòu)程序例7:統(tǒng)計一個數(shù)據(jù)塊中負(fù)數(shù)的個數(shù),個數(shù)送

RS中。

開始

D1的EA

BX

0

DX

COUNT

CX結(jié)束YCX-1=0?

YDX

RSNBX≥0?

NDX加BX加4.3.3

循環(huán)結(jié)構(gòu)程序DATA

SEGMENTD1

DB

-1,-3,

5,

6,

9,

-5COUNT

EQU

$-D1

RS

DW

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,

DS:DATASTART:

MOV

AX,

DATAMOV

DS,

AXBEGIN:MOV

AX,

DATAMOV

DS,

AXMOV

BX,

OFFSET

D1LOP1:MOV

CX,

COUNTMOV

DX,

0

MOV

AL,

[BX]CMP

AL,

0JGE

JUSINC

DXJUS:

INC

BXDEC

CXJNZ

LOP1MOV

RS,

DXMOV

AH,

4CHINT

21HCODEENDSEND

BEGIN例8:找出從無符號字節(jié)數(shù)據(jù)存儲變量VAR開始存放的N個數(shù)中的最大數(shù)放在BH中。4.3.3

循環(huán)結(jié)構(gòu)程序4.3.3

循環(huán)結(jié)構(gòu)程序DSEGSEGMENTVARNDB

5,7,19H,23H,0A0HEQU

$-VARDSEGENDSCSEGSEGMENTASSUME

溫馨提示

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

評論

0/150

提交評論