汇编语言是一种面向机器的程序设计语言,因机器的不同而不同。...

Post on 15-Mar-2016

552 views 7 download

description

第三章 汇编语言程序设计. 3.1 引言. 汇编语言是一种面向机器的程序设计语言,因机器的不同而不同。 一、计算机程序设计语言 1 .机器语言 (Machine Language) 2 . 汇编语言( Assembly Language ) 3 .高级语言( High-Level Language ) 二、 汇编语言格式. 第三章 汇编语言程序设计. 3.1 引言. ORG 0060H START : MOV A , #00H ; A←0 MOV R2 , #0AH ; R2←10 - PowerPoint PPT Presentation

Transcript of 汇编语言是一种面向机器的程序设计语言,因机器的不同而不同。...

汇编语言是一种面向机器的程序设计语言,因机器的汇编语言是一种面向机器的程序设计语言,因机器的不同而不同。不同而不同。一、计算机程序设计语言一、计算机程序设计语言11 .机器语言.机器语言 (Machine Language) (Machine Language) 2 2 ..汇编语言(汇编语言( Assembly LanguageAssembly Language ) ) 33 .高级语言(.高级语言( High-Level LanguageHigh-Level Language ))二、 汇编语言格式 二、 汇编语言格式

第三章 汇编语言程序设计第三章 汇编语言程序设计3.1 3.1 引言引言

ORG 0060HORG 0060HSTARTSTART :: MOV AMOV A ,, #00H #00H ;; A←0A←0 MOV R2MOV R2 ,, #0AH #0AH ;; R2←10R2←10 MOV R1MOV R1 ,, #03H #03H ;; R1←3R1←3LOOPLOOP : : ADD AADD A ,, R1 R1 ;; A←A+ R1A←A+ R1 DJNZ R2DJNZ R2 , , LOOP LOOP ;若 ;若 R2R2 -- 1≠01≠0 ,则,则 LOOLOOPP NOPNOP SJMP SJMP $$ ENDEND

第三章 汇编语言程序设计第三章 汇编语言程序设计3.1 3.1 引言引言

三、汇编语言构成三、汇编语言构成指令性语句和指示性语句两类。 指令性语句和指示性语句两类。 指令性语句是指采用指令助记符构成的汇编语言语指令性语句是指采用指令助记符构成的汇编语言语句,它当然必 须符合汇编语言的语法规则。 句,它当然必 须符合汇编语言的语法规则。 指示性语句又称伪指令语句指示性语句又称伪指令语句11 .. ORG ORG (起始汇编)伪指令(起始汇编)伪指令22 .. END END (结束汇编)伪指令(结束汇编)伪指令

第三章 汇编语言程序设计第三章 汇编语言程序设计3.1 3.1 引言引言

ORG 0500HORG 0500HAA EQU R1AA EQU R1A10 EQU 10HA10 EQU 10HDELAY EQU 07E6HDELAY EQU 07E6H MOV R0MOV R0 ,, A10 A10 ;; R0←R0← (( 10H10H )) MOV AMOV A ,, AA AA ;; A←R1A←R1 :: :: LCALL DELAY LCALL DELAY ;调用;调用 07E6H07E6H 子程子程序序 ENDEND

第三章 汇编语言程序设计第三章 汇编语言程序设计3.1 3.1 引言引言

33 .. EQU EQU (赋值)伪指令(赋值)伪指令

ORG 0200HORG 0200H MOV AMOV A , , AA AA ; ; A←(35H)A←(35H) :: ::

LCALL DELAY LCALL DELAY ;调用;调用 A7E6HA7E6H 子程序子程序 :: :: AA DATA 35H AA DATA 35H ; ; 88 位或位或 1616 位 位 DELAY XDATA 0A7E6H DELAY XDATA 0A7E6H ;; 1616 位专用位专用 END END

44 .. DATA DATA (数据地址赋值)伪指令(数据地址赋值)伪指令第三章 汇编语言程序设计第三章 汇编语言程序设计

3.1 3.1 引言引言

[ [ 标号:标号: ] DB ] DB 项或项表项或项表 ORG 0600HORG 0600H STARTSTART :: MOV AMOV A ,# ,# 64H64H : : TABTAB : : DB 45H, 73, 01011010B,’8’, ’B’DB 45H, 73, 01011010B,’8’, ’B’ : : ENDEND

第三章 汇编语言程序设计第三章 汇编语言程序设计3.1 3.1 引言引言

55 .. DB DB (定义字节)伪指令(定义字节)伪指令

第三章 汇编语言程序设计第三章 汇编语言程序设计3.2 3.2 汇编语言源程序的设计和汇编(略)汇编语言源程序的设计和汇编(略)

3.3 3.3 简单和分支程序设计简单和分支程序设计开始

语句 1

语句 2

语句 n

结束

简单程序简单程序 分支程序分支程序

ORG 0300HORG 0300HNUM DATA 20HNUM DATA 20H MOV R0MOV R0 ,#,# NUM NUM ;; R0←NUMR0←NUM MOV AMOV A ,@,@ R0 R0 ;低;低 88 位送位送 AA CPL ACPL A ADD AADD A ,#,# 01H 01H ;; AA 中内容变补,进位位留中内容变补,进位位留 CCyy MOV MOV @@ R0R0 ,, A A ;存数;存数 INC R0INC R0 MOV AMOV A ,@,@ R0 R0 ;高;高 88 位送位送 AA CPL A CPL A ;高;高 88 位取反位取反 ADDC AADDC A ,#,# 00H 00H ;加进位位;加进位位 ANL AANL A , #, # 7FH 7FH ;去掉符号位;去掉符号位 MOV MOV @@ R0 R0 ,, A A ;存数;存数 SJMP SJMP $ ;结束$ ;结束 ENDEND

一、简单程序设计一、简单程序设计

一、简单程序设计一、简单程序设计 ORG 0500HORG 0500H MOV R0MOV R0 , #, # M1 M1 ;; x1x1 的始址送的始址送 R0R0 MOV R1MOV R1 , #, # M2 M2 ;; x2x2 的始址送的始址送 R1R1 MOV AMOV A , @, @ R0 R0 ;; A←x1A←x1 的低的低 88 位位 ADD AADD A , @, @ R1 R1 ;; A←x1A←x1 的低的低 88 位十位十 x2x2 的低的低 88 位,形成位,形成 CyCy MOV MOV @@ R0R0 , , A A ;和的低;和的低 88 位存位存 M1M1 INC R0 INC R0 ;修改地址指针;修改地址指针 R0R0 INC R1 INC R1 ;修改地址指针;修改地址指针 R1R1 MOV AMOV A , @, @ R0 R0 ;; A←x1A←x1 高高 88 位位 ADDC AADDC A , @, @ R1 R1 ;; AA -- x1x1 高高 88 位+位+ x2x2 高高 88 位+位+ CyCy MOV MOV @@ R0R0 ,, A A ;和的高;和的高 88 位存位存 M111M111 SJMP SJMP $ ;停机$ ;停机 ENDEND

二、分支程序设计二、分支程序设计例例 44 .. 4 4 已知已知 VARVAR 单元内有一自变量单元内有一自变量 XX ,请按如,请按如下条件编出求函数值下条件编出求函数值 YY 并将它存入 并将它存入 FUNCFUNC 单元的单元的程序。程序。

第三章 汇编语言程序设计第三章 汇编语言程序设计3.3 3.3 简单和分支程序设计简单和分支程序设计

1 X1 X >> 00YY = = 0 X0 X == 00 -- 1 X1 X << 00

ORG 0100HORG 0100HVAR DATA 30HVAR DATA 30HFUNC DATA 31HFUNC DATA 31H MOV AMOV A ,, VAR VAR ;; A←XA←X JZ DONE JZ DONE ;若;若 XX == 00 ,则,则 11 转转 DODONENE JNB ACC.7 JNB ACC.7 ,, POSI POSI ;若;若 X 0﹥X 0﹥ ,则,转,则,转 POPOSISI MOV AMOV A ,#,# 0FFH 0FFH ;若;若 X 0﹤X 0﹤ ,则,则 A← A← --11 SJMP DONE SJMP DONE ;转;转 DONEDONEPOSIPOSI : : MOV AMOV A ,#,# 01H 01H :: A←1A←1DONEDONE : : MOV FUNCMOV FUNC ,, A A ;存;存 YY 值值 SJMP SJMP $$ ENDEND

第三章 汇编语言程序设计第三章 汇编语言程序设计3.3 3.3 简单和分支程序设计简单和分支程序设计

例例 44 .. 5 5 已知内部已知内部 RAMRAM 的的 BLOCKBLOCK 单元开始有单元开始有一无符号数据块,块长在一无符号数据块,块长在 LENLEN 单元,试编出求数单元,试编出求数据块中各数累加和并存入据块中各数累加和并存入 SUMSUM 单元的程序。单元的程序。

第三章 汇编语言程序设计第三章 汇编语言程序设计3.4 3.4 循环和查表程序设计循环和查表程序设计

一、 循环程序设计一、 循环程序设计

第三章 汇编语言程序设计第三章 汇编语言程序设计3.4 3.4 循环和查表程序设计循环和查表程序设计

ORG 0200HORG 0200HLEN DATA 20HLEN DATA 20HSUM DATA 21H SUM DATA 21H BLOCK DATA 22HBLOCK DATA 22H CLR ACLR A MOV R2MOV R2 ,, LEN LEN INC R2INC R2 MOV R1MOV R1 ,, #BLOCK#BLOCK SJMP CHECKSJMP CHECKLOOPLOOP : : ADD AADD A ,, @R1@R1 INC R1INC R1CHECKCHECK :: DJNZ R2, LOOPDJNZ R2, LOOP MOV SUM,AMOV SUM,A SJMP SJMP $$ ENDEND

第三章 汇编语言程序设计第三章 汇编语言程序设计3.4 3.4 循环和查表程序设计循环和查表程序设计

ORG 0200HORG 0200HLEN DATA 20HLEN DATA 20HSUM DATA 21H SUM DATA 21H BLOCK DATA 22HBLOCK DATA 22H CLR ACLR A MOV R2MOV R2 ,, LEN LEN MOV R1MOV R1 ,, #BLOCK#BLOCKNEXTNEXT : : ADD AADD A ,, @R1@R1 INC R1INC R1 DJNZ R2, NEXTDJNZ R2, NEXT MOV SUM,AMOV SUM,A SJMP SJMP $$ ENDEND

二、查表程序设计二、查表程序设计 MOVC AMOVC A ,@,@ A+DPTRA+DPTR MOVC AMOVC A ,@,@ A+PC A+PC 例例 4-7 4-7 已知已知 R0R0 低四位有一个十六进制数低四位有一个十六进制数 (0~F(0~F 中一中一个个 )) ,试编出能把它转换成相应,试编出能把它转换成相应 ASCⅡASCⅡ 码并送入码并送入 R0R0 的的程序。程序。 ORG 0400HORG 0400H

0400 E8 MOV A0400 E8 MOV A , , R0 R0 ;取转换值到;取转换值到 AA0401 540F ANL A0401 540F ANL A , #, # 0FH 0FH ;屏蔽高四位;屏蔽高四位0403 2403 ADD A0403 2403 ADD A , #, # 03H 03H ;地址调整;地址调整0405 83 MOVC A0405 83 MOVC A , @, @ A+PC A+PC ;查表;查表0406 F8 MOV R00406 F8 MOV R0 , , A A ;存结果;存结果0407 80FE SJMP 0407 80FE SJMP $$0409 ASCTAB0409 ASCTAB :: DB ′0′DB ′0′ ,′,′ 1′1′ ,′,′ 2′2′ ,′,′ 3′3′ ,′,′ 4′4′ DB ′5′DB ′5′ ,′,′ 6′6′ ,′,′ 7′7′ ,′,′ 8′8′ ,′,′ 9′9′ DB ′A′DB ′A′ ,′,′ B′B′ ,′,′ C′C′ ,′,′ D′D′ ,′,′ E′E′ ,′,′ F′F′ END END

第三章 汇编语言程序设计第三章 汇编语言程序设计3.5 3.5 子程序设计子程序设计

例 例 4. 9 4. 9 设 设 MDAMDA 和 和 MDBMDB 内有两数 内有两数 aa 和 和 bb ,请编出求,请编出求 c= a²c= a² ++ b²b² 并并把 把 cc 送入 送入 MDCMDC 的程序。设的程序。设 aa 和和 bb 皆为小于皆为小于 1010 的整数。的整数。

ORG 1000HORG 1000H MDA DATA 20HMDA DATA 20H MDB DATA 21HMDB DATA 21H MDC DATA 22HMDC DATA 22H MOV AMOV A ,, MDA MDA ;入口参数;入口参数 aa 送送 A A ACALL SQR ACALL SQR ;求;求 aa22

MOV R1MOV R1 ,, A A ;; aa22 送送 R1R1 MOV AMOV A ,, MDB MDB ;入口参数;入口参数 bb 送送 AA ACALL SQR ACALL SQR ;求;求 bb22

ADD AADD A ,, R1 R1 ;; aa22+b+b22 送送 AA MOV MDCMOV MDC ,, A A ;存入;存入 MDCMDC SJMP SJMP $ ;结束$ ;结束 SQRSQR : : ADD AADD A , #, # 01H 01H ;地址调整;地址调整 MOVC AMOVC A ,@,@ AA 十十 PC PC ;查平方表;查平方表 RET RET ;返回;返回SQRTABSQRTAB :: DB 0DB 0 ,, 11 ,, 44 ,, 99 ,, 1616 DB 25DB 25 ,, 3636 ,, 4949 ,, 6464 ,, 8181 ENDEND

ORG 1000HORG 1000HMDA DATA 20H MDA DATA 20H ;参数;参数 aaMDB DATA 21H MDB DATA 21H ;参数;参数 bbMDC DATA 22H MDC DATA 22H ;; MOV A,MDA MOV A,MDA ;参数;参数 aa 送送 A A MOV B,MDA MOV B,MDA ;参数;参数 aa 送送 B B ACALL SQR ACALL SQR ;求;求 aa22

MOV R1,A MOV R1,A ; ; aa22 送送 R1R1 MOV A,MDB MOV A,MDB ;参数;参数 aa 送送 A A MOV B,MDB MOV B,MDB ;参数;参数 aa 送送 B B ACALL SQR ACALL SQR ;求;求 bb22

ADD A,R1 ADD A,R1 ; ; aa22+b+b22 送送 AA MOV MDC,A MOV MDC,A ;存入;存入 MDC MDC SJMP $ SJMP $ ; ; SQR: MUL AB SQR: MUL AB ;求平方 ;求平方 RET RET ;返回 ;返回 ENDEND