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

下載本文檔

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

文檔簡介

4.3

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

分析問題,抽象出數學模型;2.

確定實現數學模型的算式;3.

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

寄存器);4.

編寫源程序;5.

上機運行調試。順序程序結構

一般語句條件程序結構

Y

N

If

else

語句分支程序結構

..

Switch

語句4.3

8086/8088匯編語言程序設計基本方法程序的基本結構循環控制結構

N

Y

while

語句循環控制結構

N

Y

do

--while

語句4.3

8086/8088匯編語言程序設計基本方法程序的基本結構???順序程序設計

指令指針

IP

值線性增加,IP

=

IP

+

1條件程序設計

IP

值受標志位的影響而跳變

影響標志的指令

CMP、TEST、JXX循環程序設計

IP

值受計數器

CX

中的值不為零而循環

影響標志的指令

DEC4.3

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

入運算處理轉

換輸

出返回DOS數值運算非數值運算4.3

8086/8088匯編語言程序設計基本方法程序的層次模塊結構

源程序4.3

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

:程序輸出顯示:“

Welcome

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

定義數據段源程序模塊結束指示段寄存器

初始化

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

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匯編語言程序設計基本方法堆棧數據代碼源程序模塊結束例1:編程計算W=X+Y+24-Z。其中變量X、Y、Z均為32位數。4.3.1

順序結構程序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字節無符號數相加。4.3.1

順序結構程序兩數之和按從高到低依次放在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

順序結構程序

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

;將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:符號函數4.3.2

分支結構程序??

1???1X

>

0

X

=

0

X

<

0設X為8位有符號數。

4.3.2

分支結構程序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表示的兩個有符號字數大小,將其中較大數據放在BX寄存器中。4.3.2

分支結構程序開始D1

BX結束BX≥D2?

Y

ND2

BXBEGIN:MOV

AX,

DATAMOV

DS,

AXMOV

BX,

D1CMP

BX,

D2JGE

NEXTMOV

BX,

D2;給DS賦段值

;若D1≥D2,則不交換,轉NEXT

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

AH,

4CH

INT

21HCODE

ENDSEND

BEGIN4.3.2

分支結構程序DATASEGMENT;補碼為FF85H;補碼為FF88H

D1

D2DATA

DW

-123H

DW

-120HENDSCODE

SEGMENT

ASSUME

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

送MAX單元。4.3.2

分支結構程序4.3.2

分支結構程序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

分支結構程序例6:已知X、Y、Z為三個帶符號8位二進制數,

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

開始

X

ALX≤Y?Y

ALAL

RV

結束YNX≤Z?NX≥Z?Y

ALNALYYY≥Z?

YY≥Z?

Y

NALN4.3.2

分支結構程序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

循環結構程序例7:統計一個數據塊中負數的個數,個數送

RS中。

開始

D1的EA

BX

0

DX

COUNT

CX結束YCX-1=0?

YDX

RSNBX≥0?

NDX加BX加4.3.3

循環結構程序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:找出從無符號字節數據存儲變量VAR開始存放的N個數中的最大數放在BH中。4.3.3

循環結構程序4.3.3

循環結構程序DSEGSEGMENTVARNDB

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

$-VARDSEGENDSCSEGSEGMENTASSUME

溫馨提示

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

評論

0/150

提交評論