《东南大学汇编语言》由会员分享,可在线阅读,更多相关《东南大学汇编语言(26页珍藏版)》请在金锄头文库上搜索。
1、微机系统与接口技术微机系统与接口技术东南大学东南大学第三章第三章 汇编语言程序设计汇编语言程序设计(2)(2) 格式格式# 伪指令伪指令# DOS/BIOSDOS/BIOS调用调用 (简单了解)简单了解) 重点:重点:数据结构表示数据结构表示 变量、指针变量、指针 程序结构程序结构 程序流控制(条件、分支、循环)程序流控制(条件、分支、循环) 程序设计方法程序设计方法 Assembly Language Programming(2)1微机系统与接口技术微机系统与接口技术东南大学东南大学编辑、汇编与链接程序编辑、汇编与链接程序编辑器(编辑器(Editor) 程序设计程序设计 汇编器汇编器(Ass
2、embler) 汇编语言汇编语言( (与机器有关与机器有关) ) MASM/ASM/TASM 链接器(链接器(Linker) 待装配的待装配的BINBIN指令代码指令代码 可执行可执行BINBIN指令代码指令代码 (.OBJ, .LIB, etc )( XXXX.EXE ,(.DLL), )2微机系统与接口技术微机系统与接口技术东南大学东南大学0000:03FF环境与代码运行环境与代码运行FFFF:0堆栈段堆栈段数据段数据段代码段代码段CS:IPDSSS:SP系统起始运行程序系统起始运行程序中断向量区中断向量区(系统专用)(系统专用)栈底最多4个活动段分段结构ES3微机系统与接口技术微机系统与
3、接口技术东南大学东南大学STACK1 SEGMENT PARA STACK STACK DB 512 dup(?) ;定义堆栈段定义堆栈段STACK1 512字节字节STACK1 ENDS DATA SEGMENT ;定义数据段定义数据段DATA MESSAGE DB This A Sample Program, LFCR$ DB 0DH,0AH,$ AnyDATA DW 100,. DATA ENDS ;数据段数据段DATA结束结束 CODE SEGMENT ;定义代码段定义代码段CODE ASSUME CS:CODE,DS:DATA; 说明汇编程序活动段范围说明汇编程序活动段范围 汇编语言
4、源程序格式(例)汇编语言源程序格式(例) 段名段名段说明保留字段说明保留字标号标号.2864微机系统与接口技术微机系统与接口技术东南大学东南大学 汇编语言例程汇编语言例程 (续续1 ) MAIN PROC FAR ;MS-DOS 模板语句模板语句START:PUSH DS XOR AX,AX PUSH AX ;保存返回指针保存返回指针 DS:0START1:MOV AX,DATA MOV DS,AX LEA BX,MESSAGELOOP1:CMP BYTE PTR BX,$ ; 24H JZ NEXT ;是结束符是结束符 CALL PRINT_A CHAR ;输出该字符输出该字符 INC BX
5、 JMP SHORT LOOP1 ; 继续继续5微机系统与接口技术微机系统与接口技术东南大学东南大学 汇编语言例程汇编语言例程 (续续2 ) NEXT: RET ;返回返回OSMAIN ENDPPRINT_A_CHAR PROC MOV AH,5 MOV DL,BX ;子程序,子程序,NEAR INT 21H RETPRINT_A_CHAR ENDP .CODE ENDS END START;汇编结束,运行从汇编结束,运行从START开始开始6微机系统与接口技术微机系统与接口技术东南大学东南大学伪操作命令例伪操作命令例1 1 BV1 DB 30, 20H, 111110BBV2 DB 3 DU
6、P(xx/?) ;DB ?,?BV3 DB This is a exampleBV4 DB .WV1 DW BV1,BV2,BV3 ;近指针变量近指针变量WV2 DD BV4,. ;远指针变量远指针变量DWV1 DD WV1,WV2,. ;指针的指针变量指针的指针变量DP1 DD PRC1,PRC2 ;PRC1,PRC2为为过程名过程名BV2L EQU BV4-BV3 MOV BX,MV1+4 MOV AL, BX ; AL=? JMP FAR PTR DP1+4; ;执行?执行?7微机系统与接口技术微机系统与接口技术东南大学东南大学MYDATA SEGMENT AT 8A00HBV1 DB
7、30,20H,111110BBV2 DB 3 DUP(20H); DB ?,?BV3 DB This is a example$ BV4 DB It is a Problem$ WV1 DW BV1,BV2,BV3 WV2 DW BV4DWV1 DD WV1,WV2DW2 DD .MYDATA ENDSBV2的地址的地址=?DW2的地址的地址=?8A00:0003H8A00:003AH;- 0000;- 0003H;- 0006H;- 0008H;- 001AH;- 002AH;- 0030H;- 0032H;- 003AH伪操作命令例伪操作命令例1分析分析8微机系统与接口技术微机系统与接口技
8、术东南大学东南大学CODE SEGMENT PRC1 PROC FAR ;8B00:0000:PRC1 ENDPPRC2 PROC FAR ;8B00:2C20:PRC2 ENDPDP1 DD PRC1,PRC2 ;8B00:3000 ;DP1 内容内容=?ASSUME CS:CODE, DS:DATAJMP FAR PTR DP1+4; 目标地址目标地址=?=伪操作命令例伪操作命令例2分析分析00,00,00,8B,20,2C,00,8B8B00:2C20JMP FAR PTR CS:3004H9微机系统与接口技术微机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计方法回顾方法
9、回顾 步骤步骤:分析、建模:分析、建模-算法算法 -单任务单任务同其它语言同其它语言:判断框 条件?终止框过程/执行框起始/准备框 流程图各框的表示法存储空间单元存储空间单元-编程编程-调试(调试(DEBUG版)反复版)反复-运行运行/发发行(行(Release)版版 设计方法:自顶向下,逐步细化,层层分解设计方法:自顶向下,逐步细化,层层分解具体小任务具体小任务; 模块模块化程序设计:相对独立、功能单一、化程序设计:相对独立、功能单一、I/O关系明确:合作、排障;关系明确:合作、排障;Global/Local 变量变量(CS:xxx/Auto/Static) 10微机系统与接口技术微机系统与
10、接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计结构(结构(P166)质质量量评评估估 内存容量(效率)、速度、源代码(复杂性)、可维护性、可靠性基本结构基本结构 (单任务):顺序、分支、循环语句1语句2语句3语句n乱序?MOV AX,100MOV BX,200MOV CX,8000ADD BX, CXCMP BX,1000JZ NEXT11微机系统与接口技术微机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计分支分支结构结构基本结构基本结构 (单任务单任务):顺序、):顺序、分支分支、循环、循环程序段程序段条件条件?N程序段程序段1程序段程序段2条件条件?NY CMP
11、AL,100 JZ NEXT MOV CX,2000NEXT: MOV CX,3000 CMP AL,100 JZ NEXT1 JMP N100NEXT1: MOV CX,3000NEXT:12微机系统与接口技术微机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计分支分支结构结构基本结构基本结构 (单任务单任务):顺序、):顺序、分支分支、循环、循环.程序段程序段1程序段程序段n程序段程序段2程序段程序段n-1多路条件测试多路条件测试条件:数据比较结果条件:数据比较结果散转:程序入口表散转:程序入口表程序流变化程序流变化13微机系统与接口技术微机系统与接口技术东南大学东南大学汇编
12、语言程序设计汇编语言程序设计循环循环结构结构基本结构基本结构 (单任务单任务):顺序、):顺序、分支分支、循环循环N程序段程序段1结束循环结束循环?Y计数循环计数循环条件循环条件循环循环体循环体结束结束?Nfor(i=0;i100;i+)do while()while () do 14微机系统与接口技术微机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计结构结构过过程程(子子程程序序)反反复复使使用用程程序序段段,简简化化设设计计、减减少少程程序序空空间间开开销、易读、易维护调试。销、易读、易维护调试。-函数函数, 方法方法 ENTRY/ EXIT/USED指明传递和保护(变量指
13、明传递和保护(变量/寄存器)寄存器)问题问题 保护现场保护现场/恢复现场(主程序恢复现场(主程序(调用者调用者)/子程序均可);子程序均可);主程序主程序(调用者调用者)完成完成 PUSH AX PUSH BX CALL SUBRT;(不保护)不保护) POP BX POP AX .SUBRT PROC子程序完成子程序完成 SUNRT: PUSH AX PUSH BX . POP BX POP AX RET 15微机系统与接口技术微机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计结构结构过程(子程序,函数过程(子程序,函数, 方法)参数传递方法)参数传递寄存器传递;寄存器传递;
14、内存单元(全局)传递;内存单元(全局)传递;速度快,但结构差,难维护速度快,但结构差,难维护MOV SI, OFFSET SBuf_head MOV DI, OFFSET Dbuf_head MOV CX,COUNT CALL BLKCHEK堆栈传递堆栈传递-POP取取/BP取(子取(子RET n/主主ADD SP+2*n)int BLKCHEK(amount:int, *destp:char, *srcp:char); C(多任务)中断(嵌套)多任务)中断(嵌套):任务通信、协调:任务通信、协调 ;PUSH SI;PUSH DI;PUSH CX;ADD SP,6 ;C16微机系统与接口技术微
15、机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计处处理与判别理与判别比较比较 CMP AL,A;41H,65 JZ/JNZ ; CMP CX,BUFSI JC(JNC) JG/JL缓冲区缓冲区/指针指针 初始化(初始化(DB/DW静态)静态) XOR AX,AX; MOV BUF,AX; MOV BUFPT,0 ;OFFSET Buf_head INC BUFPT 修正计数(指针)修正计数(指针) CMP BUFPT, BUFEND ; full? OFFSET Buf_tail17微机系统与接口技术微机系统与接口技术东南大学东南大学汇编语言程序设计汇编语言程序设计处处理与判别
16、理与判别判零判零 AND AL,AL; OR AX,AX, TEST AL,AL ; OR AL,CL? CMP AL,0 JZ置位置位 OR AL, 00001000B; OR AL, 8 ;B3=1复位复位 AND AL,01110111B; AND AL,77H; B7,B3=0判位判位0/1:TEST AL, 00001000B; JZ(0)/NZ(1) 多位多位程序流控制程序流控制 标志单元计数器位循环标志单元计数器位循环816次次18微机系统与接口技术微机系统与接口技术东南大学东南大学 顺序程序举例顺序程序举例计算计算f(x)=5x3+4x2-3x+12=(5x+4)*x-3)*x
17、+12 计算计算f(6)FXCALC PROC; ENTRY X=x,EXIT=f(x);Used:AX, DX MOV AX,5 MUL X ADD AX,4; MUL X;(;() SUB AX,3 ;() MUL X ADD AX,12 MOV RESULT,AX RETFXCALC ENDP ;?传递方式传递方式:X DW 6; MOV X,6 存储变量传递参数存储变量传递参数调用:调用:MOV X,6 ; CALL FXCALC19微机系统与接口技术微机系统与接口技术东南大学东南大学分支:比较测试结构分支:比较测试结构跳转结构跳转结构(P169) 根据根据X0 给给Y赋值赋值-1,0
18、,1 MOV AL, XX MOV AH, 1 CMP AL, 0 JG EXIT;X0, AH=1 JZ ZERO MOV AH, -1;0 JMP EXITZERO: MOV AH, AL; 0EXIT: MOV YY,AH20微机系统与接口技术微机系统与接口技术东南大学东南大学分支:比较测试结构分支:比较测试结构(最大值最大值w) MOV BX, OFFSET CMPDAT MOV CX,COUNT MOV AX,BX INC BX INC BXCHECK0: CMP AX,BX JNC CHECK1 MOV AX,BXCHECK1:INC BX INC BX LOOP CHECK0EX
19、IT: 21微机系统与接口技术微机系统与接口技术东南大学东南大学 分支表(跳转结构)分支表(跳转结构)-散散转转表表内内:入入口口地地址址:SUB0-L/H,SUB1-L/H,.表表内无条件转移指令内无条件转移指令 JMP SUB0,JMP SUB1,.按按INDEX序号跳转到相应子程序序号跳转到相应子程序DSEG SEGEMNTTABLE DW SUB0,SUB1,SUB2,SUB3,SUB4INDEXDW ?RESULT DW ?X DW 2102. MOV AX, DSEG ;SEG TABLE MOV DS,AX 22微机系统与接口技术微机系统与接口技术东南大学东南大学 MOV BX,
20、OFFSET TABLE MOV SI,INDEX ADD SI,SI JMP WORD PTR BX+SI; 转不同分支转不同分支 分支表(跳转结构)分支表(跳转结构)-散转散转(续续1)SUB2: MOV AX,100 MOV RESULT,AX RETSUB1: MOV AX,X SAR AX,1 ;ADD AX,AX MOV RESULT,AX RETSUB0: MOV AX, X ; ;不同分支程序不同分支程序 SHL,AX,1;X*2 MOV RESULT,AX RET23微机系统与接口技术微机系统与接口技术东南大学东南大学循环结构循环结构 条件控制法条件控制法先判断后工作whil
21、e .do; MOV CX,0; CHECK:CMP CX,100; JNC FINISH; INC CX, JMP CHECK;FINISH: 先工作后判断条件先工作后判断条件 do ( )while MOV CX,0; CHECK:. INC CX; CMP CX,100, JC CHECK;FINISH:24微机系统与接口技术微机系统与接口技术东南大学东南大学循环结构循环结构(续续2)DELAY: MOV CX,1000 ; PUSH CX,; PUSH DX,; MOV CX,1000DELAY1: MOV DX,50000;延时延时xx msDELAY2: NOP NOP DEC D
22、X JNZ DELAY2 DEC CX JNZ DELAY1 RET; POP DX; POP CX; RET条件条件 数值大小;符号数值大小;符号 地地址指针;计数法;计数值址指针;计数法;计数值累加;递减;多重循环:累加;递减;多重循环:延时程序例延时程序例25微机系统与接口技术微机系统与接口技术东南大学东南大学 循环结构循环结构(续续4)子程序调子程序调用用 (1) PUSH CX; PUSH DX; CALL DEALY POP DX; POP CX (2) PUSH CX MOV CX,2000; CALL DEALY1 POPCX (3)子程序现场保护子程序现场保护 调用者(调用者(Caller)/子程序保护;子程序保护;(三三)26