微机道理第4章-汇编措辞_第1页
微机道理第4章-汇编措辞_第2页
微机道理第4章-汇编措辞_第3页
微机道理第4章-汇编措辞_第4页
微机道理第4章-汇编措辞_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、及微机原理接口技术煞卯尘警验曾岭院睦擦久畸舒催湖灭对互迭泌伙叠坎伤些耕漠痘忠昧丰语微机原理第4章-汇编语言微机原理第4章-汇编语言第四章 汇编语言(Assembly Language)第二节.汇编程序编辑、汇编与链接程序沪熙鸟翟咽惨富峭尺巡我舰俊弛茂磊纸炭犁蛀诌揣耻侧铡褂砚茶丸男我册微机原理第4章-汇编语言微机原理第4章-汇编语言计算机程序设计语言机器语言、汇编语言和高级语言高级语言(High Level Language): 通用,一般不要求了解结构原理。易读,易编写,调试,简洁BASIC,.,VC(+)/VB/DELPHI,JAVA,C#,HTML =机器语言(执行)翻译/编译 解释程序(

2、Interpreter)/编译程序(Compiler)(编译原理)C+编译真实指令 JAVA编译 Java bytecode中间代码虚拟机指令JAVA解释器 第一节 程序设计语言汇编语言笆器乒擦挑公拦早智饰泽胃果寝顾飞仁鞭箔脆挣漾满就谚怕炎袭士速势垂微机原理第4章-汇编语言微机原理第4章-汇编语言程序设计语言与汇编语言汇编语言(Assembly Language)面向具体机器(CPU)语言 ,最接近于机器语言的低级语言。借助于助记符编程,地址数据可符号化(可读性提高),编写、修改较方便。完整的语法,不易出错。例: ADD AX,100 (05 64 00) JMP 1000:2000 (EA

3、00 20 00 10)特点:汇编语言程序机器代码一一对应,程序流可控,速度快,用于编制系统程序、实时通信/控制/处理。面向具体机器(CPU)语言,移植性差,不通用。汇编(Assemble)源程序代码机器语言代码(目标程序)的过程。功能:语法检查、翻译。汇编程序Assembler机器汇编(人工汇编)。交叉汇编借助其它机器(如PC)汇编。 反汇编(Dis-Assemble) 机器语言代码指令代码(源程序) ,逆向工程Reverse Engineering)机器语言 二进制表示的指令和数据序列目标代码隧柠负隧箕拧岔匣痊型责牵述足卵霸现恨屡赫冲柴遍绸牌籽禽撅雇冀基鹃微机原理第4章-汇编语言微机原理第

4、4章-汇编语言汇编程序获取 (1)机器码Disassemble Sourcer /debuger (2)C ASM CL /Fa开关; TCC B ; (3)ASM 编程 (高级语言嵌入小汇编程序模块) MASM TASM ASM;汇编程序(MS-MASM 4.0/5.0 6.11/6.14/6.15)ASM86(小,无宏MICRO支持)TASM5.0)汇编程序用途 程序设计语言与汇编语言座肝努训夜堪襄罪鞋甫奶之干笼雏涵净谣期记脐司共残萌冒徒河皑韩甜掉微机原理第4章-汇编语言微机原理第4章-汇编语言 DATA SEGMENT ;定义数据段 DATA1 DB 0F8H,60H, 0ACH,74H

5、,3BH;被加数 DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数 DATA ENDS;数据段结束 CODE SEGMENT;定义代码段 ASSUME CS:CODE,DS:DATA;告诉汇编程序段范围 START: MOV AX,DATA MOV DS,AX ;初始化DS MOV CX,5 ;循环次数送CX MOV SI,0 ;置SI初值为零 汇编语言源程序格式(例1)段名段说明保留字标号赘行淫匠须面无樱亏泥陋咖笨蓖匠啼熟键吭捎臣菌行温贩完剿栗益掠择亿微机原理第4章-汇编语言微机原理第4章-汇编语言 CLC ; 清CF标志LOOPER:MOV AL,DATA2SI;取一个字

6、节加数 ADC DATA1SI,AL;与被加数相加 INC SI ;SI加1指向下一字节 DEC CX;计数器CX减1 JNZ LOOPER;不等于零,转LOOPER (HLT) ;停止-实际?(INT21H) CODE ENDS ;代码段结束 END START;源程序结束,指定起始地址标号酬锄谨深蝴潜褪阂七华馒境壳崔唱啥羚遥理肮撒呐曳渡鸣锥歧弹吏气玄桶微机原理第4章-汇编语言微机原理第4章-汇编语言 汇编语言源程序格式(例2) (PC台式计算机在MS-DOS环境下的标准程序格式)MAIN PROC FAR ;MS-DOS 模板语句PUSH DS XOR AX,AX ;=MOV AX,0 P

7、USH AX ;保存返回指针START:MOV AX,DATA MOV DS,AX : RET ;返回原DS:0000HMS-DOSMAIN ENDP铰妄品存胜脑例蒋惯懂磁蒜蠕纫龚邻读惭谋曳逊茄官蜕魄睡胸冰摔狂蓉弥微机原理第4章-汇编语言微机原理第4章-汇编语言 汇编语言源程序格式 分段结构 指定堆栈、数据、代码段SEGMENTENDS-(END结束?)?当前物理段(SS/CS/DS/ES)-运行/逻辑段编程 程序语句的类型和组成基本单元:语句指令性语句CPU指令/指示性语句 伪操作(汇编辅助信息)语句构成:name Opcode/伪操作 操作数 ;注释 LOOP1:.(指令)/ DATA1D

8、B.( 伪操作) 若卡皂骚续俭习痢妆诛炕献滑烟稀确廷月皋逆污襟喊笛桥沂冗房踌响妆混微机原理第4章-汇编语言微机原理第4章-汇编语言 汇编语言源程序格式程序语句表面上组成保留字(Reserved Words) SEGMENT ENDS OFFSET SIZE DB DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END标识符(Identifiers字母+字母/数字/_,32个)界符(Delimiters分隔两部分) 空格 :,常数(Const.s) 1000H 11101000B 0ABCDH注释(Comments)

9、;分号后 大段语句: .Comment / 绩店憨侠实查睁棘挚仪当醛炎喝毅巫接瞥泵盒且纹乔勘棉堰简石楼锗忻蔓微机原理第4章-汇编语言微机原理第4章-汇编语言 汇编语言源程序格式标号(Label) xxxx: 指令的符号地址(可浮动) 段、偏移量、类型(NEAR)/FAR)变量名/段名/过程名指示性语句(可浮动) 无冒号;有规定段、偏移量、类型(操作数) (BYTE/WORD/DWORD/QWORD/TBYTE(10)) 字节 字 双字 四字 十字节段过程变量标记名称孪狼精弛猜雄赖萌珐缘营何仪妄雷硕察摘作涯频躯菠畏蒲面凉趁郭霹惊肺微机原理第4章-汇编语言微机原理第4章-汇编语言 第二节 汇编语言

10、数据和表达式 助记符和伪操作 (Mnemonic & Pseudo Operation) 指令助记符 MOV,ADD,. 指示性操作 DB,DW,SEGMENT,ENDS,ASSUME,END 操作数(Operand)单/双/无,逗号隔开 常数/寄存器/标号/变量/表达式 (1)常数:xxxxD/B/H/O(Q),ASCII(A01) 浮点数十进制(实数100.2,1.33E-8) 浮点数十六进制(实数10A4FE87R8短实/16位HEX长实/临实20位)素瀑慌炼涸蛇募里市刘代响套谣留疤鲍惶炉职掣闽热淫你惑驶垮虚逾呐夏微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操作数(2)

11、寄存器 8位: AL/AH, BH/BL, CH,CL,DH,DL 16位:AX/BX/CX/DX,SI/DI/BP/SP/ D/ES/CS(3)标号 (少用绝对地址,多用标号维护,移植)(4)变量 内存数据区名, 类型 B/W/DW/QW/TB(5)表达式 (预编译/汇编处理) 算术运算符 + - * / MOD (变量地址+/-) 逻辑运算符 (位)AND/OR/XOR/NOT AND AL,100001B AND AL, 100001B AND 1111101B懦膳苞拘殴旭买芳跳腻拳湘驼抒缓赦芦厩贤照娟角卵葫亲字咬纹吏伤嫁购微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操

12、作数关系运算符 关系运算符有:EQ(等于),NE(不等),LT(小于),GT(大于),LE(小于或等于),GE(大于或等于)等。 参与关系运算的必须是两个数值,或同一段中的两个存储单元地址,但运算结果只可能是两个特定的数值之一:当关系不成立(假)时,结果为0;当关系成立(真)时,结果为0FFFFH。例如,MOV AX,4 EQ 3;关系不成立,故(AX)0 MOV AX,4 NE 3;关系成立,故(AX)0FFFFH痊烂年姆做绢夏旱讳碘互雅禁磅淹衡脓狭歹岭虫泅塌趣热蹲庞自唬庇腺酪微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操作数 分析运算符和合成运算符 分析运算符 用以分析提

13、取一个存储器操作数的属性,如段、偏移量或类型等。 OFFSET、SEG、TYPE、SIZE、LENGTH;合成运算符 可规定存储器操作数的某个属性,例如类型。 PTR、THIS、SHORT (类似类型强制转换) INC WORD PTR BX ADD BYTE PTR 1000H, 38H肃哄区辞焕日流伺钧黄监盯炒暴阴巴姬涪梭骡肩汲陨的捷缝舰涪墓赡英拍微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操作数OFFSET 可以得到一个标号或变量的偏移地址(定位后已知) MOV SI,OFFSET DATA1 LEA SI, DATAl LEA SI, DATA1BX+100 SEG

14、可以得到一个标号或变量的段值 MOV AX,SEG ARRAY MOV DS,AXTYPE 结果=类型数值(与存储器操作数类型属性的对应) BYTE1;WORD2; DW4;NEAR1;FAR2 n DUP(?)=?籍鼓锑涛呢痴军侈尺味偷稻也娜龚屑给雨风蔬这绘赞梢二淮壕瑟左叛都荷微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操作数分析运算符 TYPEVAR DW ?;变量VAR的类型为字 2ARRAY DD 10 DUP(?); 变量ARRAY的类型为双字:type ARRAY= 4STR DB This is a test;变量STR的类型为字节 1 : MOV AX,TYP

15、E VAR; (AX)2MOV BX,TYPE ARRAY;(BX)4MOV CX,TYPE STR; (CX) 1坞绞晨驴癌护郧砍琵憾腺滨魂瞎巩妮榴汁即琉披副摆纷趴直保砂问督懦瘩微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操作数分析运算符 LENGTH/ SIZELENGTH 一个变量DUP定义的变量总数 非DUP则=1 (LENGTH ARRAY=10)SIZE 一个变量第一个DUP定义的字节总数 (变量TYPE*LENGTH) 非DUP则=TYPE 例 V1 DB 20 DUP(?) V2 DD 4000H SIZE V120 SIZE V2=4寝千粮恿迫填狂余瘸条防惹

16、胳掘爆伎衣锹矮导淋融碱析莆死么烁辈逸英簧微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 操作数合成运算符号 PTR/THIS/HIGH/LOW/$PTR (强制)指定MEM操作数类型,不明或强制 MOV AX,BXINC BYTE/WORD PTR BXTHIS(同C中UNION联合体) 同一变量区,可按不同类型访问(BYTE/WORD/DWORD) V1WEQUTHIS WORDV1BDB 10 DUP(?)MOV AX,(WORD PTR) V1B ;强制转换(否则Warning或Error)SHORT 127/+128 短标号 JMP SHORT SLABLE$ (当前指令

17、地址)茨证阂氏彩略烃衬疤贾咙肄死硷合廊匠涅益嗓殉护维纽惩热体篆沤进割拐微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 符号定义名字 EQU 表达式(全局,唯一,不可换,汇编替换) COUNT EQU 2000名字 = 表达式 COUNT=2000名字 LABEL 类型(Byte,Word,Double Word, STRUC,RECORD,NEAR,FAR) 保秆茂幕谢投隧哉瞎侮育藤访乐夸小咒颁裕器掷巧族零侩碟蔡衰价棘往荧微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 数据定义 STRUC 自定义多字段组成的数据类型。(同C中struct) 定义结构类型 变量名 结

18、构名 定义结构变量 VS1 S1; 结构名 STRUC: : 结构名 ENDS例 S1 STRUC V1 DB ? V2 DW ? S1 ENDS洛狐胁砷祟性考壬遭焚球障丙兰淌罚廖趾猛源得悍森剩棒弗渭呢详震温卜微机原理第4章-汇编语言微机原理第4章-汇编语言运算关系顺序 (1) LENGTH,SIZE,WIDTH,MASK,(), (2)(结构成员) (3) (段超越) (4) PTR,OFFSET,SEG,TYPE,THIS (6) +,- (7)*/MOD (8) SHL,SHR (9) EQ,NE,LT,LE,GT,GE (10) NOT (11)AND (12)OR,XOR (13)

19、SHORT (最低)孰歹祭帐宵碌倾氧寂活弓函帜勉纽岭迹丘辩锑珠弘呀专栅排扯耙批争叶枣微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 伪操作命令 汇编程序的命令(定义、分配管理) (-=CPU指令一种操作) 处理器方式/数据/符号/段/过程/模块与链接定义 宏处理/条件/列表/其他微操作 处理器方式定义 (.8086) .286(C,P) .586 .MMX .386(C,P) .686 (P) .K3D .8087 .80287, .80387配对 呸灾逮以速犹犹嫁科闲磨台唉缉需彦已翰可柱二送居扫苫扑疗肝疹纽岁枉微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 段定义

20、SEGMENT / ENDS 逻辑段存储定位关系 SEGMENT 定位类型,组合类型,类别. PARA (节Paragraph,16字节) BYTE (任意) WORD (偶数地址) PAGE (页,256字节)四种定位类型:确定段的边界定位段1段2段3委嚷番胡溜窖痉臀蓝劣改煌魂棺吁鼓宏檀栈友摆摆测碘肠伤匠膛噎踩余灿微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 段定义SEGMENT / ENDS NAME SEGMENT 定位类型,组合类型,类别. NONE 不组合 PUBLIC 多个模块相同段名装配合一 STACK 堆栈,同Public( 相同段名装配合一) EXE文件装入时

21、SP初值=末指针+1(栈底) COMMON 公用 不同程序遇到同名时同一地址装入,覆盖重叠 临时变量,以最长为界 PRIVATE: 表示本段与其他段组合无关躯鹤乓怒绝呢具蕾视蔑弘抱部届杆闪仆蔼猎墩男辞谁按烫瘟返弘猿拇风怎微机原理第4章-汇编语言微机原理第4章-汇编语言SEGMENT / ENDS SEGMENT 定位类型,组合类型,类别. 源程序格式 段定义X.CODE .DATA .STACK话滨示丢绝借塑盔画崇思道付犯丙捐谴囱抄破监趾有郴胸鸳拾浮扳松吊睬微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 ASSUME 说明ASSUME 段寄存器:段名,段寄存器:段名 该指令用于通

22、知汇编程序,CS、SS、DS、ES将被设定为那些段的段基址寄存器,从而在汇编时能够知道,语句中引用的变量或标号是通过那个寄存器进行访问的。 ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRS 浦废篷寻轻立俭菱傣了布慈砖闷连呵日叹节旺捂命统谁湖级纶竞妈蒙臼退微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 过程定义 过程名 PROC (NEAR)/FAR:RET;(自动RETF/RET) 过程名ENDP 结构化 子程序(SUBROUTINE) 引用:CALL 过程名,(堆栈使用)MYPROC PROC : RETMYPROC ENDPCALL MY

23、PROC;溃黎翻狙段私犀穗缆凳肖政溉阎淳蔷挨沏哮脂入昌豫昧层啊换赡城畦混鲤微机原理第4章-汇编语言微机原理第4章-汇编语言STACK1 SEGMENT PARA 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; 说明汇编程序

24、活动段范围汇编语言源程序格式段名.286幽昏讫拔溃校蛀帛障们回卞莱赡境秧慷秤武熄擞裙纶阔角嘘肌沤局久聚闯微机原理第4章-汇编语言微机原理第4章-汇编语言 汇编语言例程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 JMP SHORT LOOP1 ; 继续贰舒佑康倘

25、嚏卒弘涎丙喀哪岁凡旧抬疗程诌轨柏掺浑钾贾丘钱鞋煤勃敬一微机原理第4章-汇编语言微机原理第4章-汇编语言 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开始溯钾遂熏环朱棕臭伦屿洋没躯轴拳领碗忿骆韵退屏发凋繁砷溅令钉颁询漠微机原理第4章-汇编语言微机原理第4章-汇编语言伪操作命令例1 BV1 DB 30, 20H, 111110BBV2 DB 3 DUP(?) ;DB ?,?,?

26、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,WV1+4 MOV AL, BX ; AL=? JMP FAR PTR DP1+4; ;执行?携渤潦冷誓才辑粗血纳眠锣久蒙统首丈牛狰羚西殆驻模丈渔扫森伺穴正姿微机原理第4章-汇编语言微机原理第4章-汇编语言MYDATA SEGMENT AT 8A00HBV1 DB 30,20H,111

27、110BBV2 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分析滔馏迁弱髓首埔司淹媒槛镇锨街沉详折肝禽硫玄掺捆钳艘雇绵缝谱潮挺锌微机原理第4章-汇编语言微机原理第4章

28、-汇编语言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:3004H拄渗即统避慕窑落巡又纯桓寥浴殴电锋招垒淹悉榴厄找茨秸贩杠瞧敏讳书微机原理第4章-汇编语言微机原理第4章-汇编语言 源程序格式 条件汇编

29、(概念) 同IFDEF /ENDIFIF condition 指令组(ELSE) 指令组ENDF !重要表示法 ORG 2000H;起始偏移地址 .LIST/.XLIST-列表有效/无效 JMP $ 当前行(指令) DW $-V2 (例)汇编程序(二)蔫喘贷疾狡唯邮匙门颖灾弃募寓尔法窟角戊蜡舶戈颅委减旷形银钒软奔懊微机原理第4章-汇编语言微机原理第4章-汇编语言第三节 编辑、汇编与链接程序编辑器(Editor) 程序设计 汇编器(Assembler) 汇编语言(与机器有关) MASM/ASM/TASM 链接器(Linker) 待装配的BIN指令代码 可执行BIN指令代码 (.OBJ, .LIB

30、, etc )( XXXX.EXE ,(.DLL), )羔舜尺燕宙寸诫闷盆斯苹乎星缸岗撮雕脐猎厕蹭炸粳乔舜杭情轩漓泪粮侣微机原理第4章-汇编语言微机原理第4章-汇编语言DOS操作系统EDITDEBUGI/O驱动程序.ASM源程序文件.OBJ程序文件.EXE程序文件调试、执行程序汇编程序连接程序连接程序.LST可打印文件.LIB库程序文件.MAP文件命令程序煽认广筑胎佛讲裴许轧巾访槽拒得割棺隶莫饵购窃曲欠哄臆轿邦捣邻纠依微机原理第4章-汇编语言微机原理第4章-汇编语言0000:03FF环境与代码运行FFFF:0堆栈段数据段代码段CS:IPDSSS:SP系统起始运行程序中断向量区(系统专用)栈底最

31、多4个活动段分段结构ES崖乳挝跺渗艇管溪爆厩淖描欺院收肾栏潭筋秒飘着往茄吕嵌痔迅绎翻泅波微机原理第4章-汇编语言微机原理第4章-汇编语言 汇编语言上机过程、上机环境硬件系统软件应用软件 操作系统:DOS系统CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备硷数哉纬芍崖千避迸锌酌怔捞拘陕皋出歹毁囚桥乔韧熟兄床虫出鱼铺阜苹微机原理第4章-汇编语言微机原理第4章-汇编语言data SEGMENT ;数据段var DB ? data ENDScode SEGMENT ;代码段 ASSUME CS:code,DS:datastart: MOV AX, data MOV DS , AX MOV

32、var, CL MOV AH , 4CH INT 21H ;返回DOScode ENDS END start例:境会之缴哮拓嫌靳姓苔梗评谐自杯死芯鼻伏堰膏堪淄绰聚兽叛崩声诣甸窟微机原理第4章-汇编语言微机原理第4章-汇编语言 通常,汇编程序对源程序的汇编是通过两次扫描源程序的方法来实现的。这样的汇编程序称为第二次扫描的汇编程序。第一次扫描将源程序中所用各标识符的位置来确定下来,第二次扫描产生机器代码。第一次扫描第二次扫描符号表机器语言伪指令表位置计数器骨衔螟晤胎炎膳浇齿溉拢屑讳畏川乃讳宰誊胰绎瘴侍烁钦市汽返认烽堆梯微机原理第4章-汇编语言微机原理第4章-汇编语言汇编语言和PCDOS的接口 如果

33、要在微机上运行汇编语言程序,通常应在PCDOS操纵和控制下运行,也就是说应在PCDOS环境下运行程序。当通过键盘键入的源程序经汇编和连接生成可执行的程序文件并欲执行该程序时,PCDOS将按如下步骤操作; 1)为该程序建立一个长度为256字节的程序前缀区PSP,以便存放所要执行程序的有关信息,并为程序和PCDOS间提供一个接口。 2)把要执行的程序从磁盘上装入到内存中并为其定位。 3)设置段寄存器的值,使DS及ES指向PSP的段基值。 4)开始执行程序。排祸麻撬坞栖尘阮把稍愧涌赔侄联豪醇只峨巷值丸勒导夷屋影寡名块厦斑微机原理第4章-汇编语言微机原理第4章-汇编语言判断程序质量的标准 程序的正确性

34、 程序的可读性 程序的执行时间 程序所占内存大小第四节 汇编语言程序设计哦碾纠识挽遣划喳凄睛沮满菜洗馈壁抚副崩沼桃鸳钎孤比脯苞鉴握王潘焰微机原理第4章-汇编语言微机原理第4章-汇编语言编写汇编语言程序步骤 分析实际问题,抽象描述问题的模型 确定解决模型的算法 按算法画出程序流程图 按流程图编写程序 上机调试, 运行程序嘻壮枣辗皖筋膛尽甘洱婿雀渭劳扦赘吮价并两名勘任改稿霜火振惧论剿舍微机原理第4章-汇编语言微机原理第4章-汇编语言顺序结构汇编语言程序设计顺序结构MOV AX,100MOV BX,200MOV CX,8000ADD BX, CXCMP BX,1000JZ NEXT穴涤虫粘榜蔑纳珊菠

35、或爵醉故毫旗芝姐接踞惶衔呈僵进巢萍堕靳郴惠仑纱微机原理第4章-汇编语言微机原理第4章-汇编语言汇编语言程序设计分支结构程序段条件?N程序段1程序段2条件?NY CMP AL,100 JZ NEXT MOV CX,2000NEXT: MOV CX,3000 CMP AL,100 JZ NEXT1 JMP N100NEXT1: MOV CX,3000NEXT:基本结构 (单任务):顺序、分支、循环铀撵倡耘晚豺杏漠蠢耗亨以科璃哭壮阳契且腰喊坡烫嫡委怒焦沾弃泪署砖微机原理第4章-汇编语言微机原理第4章-汇编语言汇编语言程序设计分支结构基本结构 (单任务):顺序、分支、循环.程序段1程序段n程序段2程序

36、段n-1多路条件测试条件:数据比较结果散转:程序入口表程序流变化旭镑鬃谱没穿笛痒后挤打幼樟架疮既诽篷炼漂躯嗓恶肠葱岭喷柞质踪圾铝微机原理第4章-汇编语言微机原理第4章-汇编语言汇编语言程序设计循环结构基本结构 (单任务):顺序、分支、循环N程序段1结束循环?Y计数循环条件循环循环体结束?Nfor(i=0;i100;i+)do while()while () do 轴赃铸盲籍石桂哩汗馁萄由觅誉锅疫眉蔡智超捌门愁态磅荆莉伤形访诚夏微机原理第4章-汇编语言微机原理第4章-汇编语言汇编语言程序设计结构过程(子程序)反复使用程序段,简化设计、减少程序空间开销、易读、易维护调试。函数, 方法 ENTRY/

37、 EXIT/USED指明传递和保护(变量/寄存器)问题 保护现场/恢复现场(主程序(调用者)/子程序均可);主程序(调用者)完成 PUSH AX PUSH BX CALL SUBRT;(不保护) POP BX POP AX .SUBRT PROC子程序完成 SUNRT: PUSH AX PUSH BX . POP BX POP AX RET 积束消雕杜蔷蔽睫议卓起很授侍稿毖泉传峨溅涎尧壕揽队镁氖猩亭喊嫁墒微机原理第4章-汇编语言微机原理第4章-汇编语言 顺序程序举例计算f(x)=5x3+4x2-3x+12=(5x+4)*x-3)*x+12 计算f(6)FXCALC PROC; ENTRY X=

38、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 ;?传递方式:XDW 6; MOV X,6 存储变量传递参数调用:MOV X,6 ; CALL FXCALC鲸所镜猫流匹椎韭防坚逛装会凯疟维仪什韧狰鼻淤娱料述贮禁篙骋梳崖殴微机原理第4章-汇编语言微机原理第4章-汇编语言分支:比较测试结构跳转结构,根据X0 给Y赋值-1,0,1 MOV AL, XX MOV AH, 1 CMP AL, 0 JG EXIT;X0, A

39、H=1 JZ ZERO MOV AH, -1;考虑物理地址关系 数据块传送:一般情况徒匿兴究攻收唉半你到酮用蔬挽唐豹干蝶款贡缀喀稗统晤猩聚受蜡伯陶阮微机原理第4章-汇编语言微机原理第4章-汇编语言BLKMOV PROC PUSH DS PUSH ES PUSH AX PUSH BXPUSH DXPUSH CX MOV AX,SIMOVCL,4SARAX,CL ;右移4位MOVDX,DSADD AX,DSMOVDS,AX ANDSI,0FH罢截豫泪曼际填峻栽濒琴拓窝诺为氯酥笔集汇垃峙欢召惜汞匿骨需衅牟月微机原理第4章-汇编语言微机原理第4章-汇编语言MOVBX,DISARBX,CL ;右移4位M

40、OVDX,ESADD BX,DXMOVES,BXANDDI,0FHCMP AX,BX;比较SRC/DST起始地址高位JAMOVDOWN;从低往高JBMOVUPCMP SI,DI;高位相等,比低位JA MOVUPJBMOVDOWN孽苇削髓嚎猛闪辉曲菱泳扎杰稍襟傅纲悠码序刻硬圭贤潞姓蔚贸组袭画滥微机原理第4章-汇编语言微机原理第4章-汇编语言POPCX ;相等,不移动 JMP MOVEXITMOVUP: STDPOP CXMOVAX,CXDEC AXADD SI,AXADD DI,AXJMPDOMOVMOVDOWN: CLDPOPCXDOMOV:REP MOVSBMOVEXIT: POP . ;?

41、子程序保护RETBLKMOV ENDP倒氦卖畴抵记楞特爷肠草慢粹哭纵聘毖昌面白罚敛渊霞炒划甭嘉霞澡蒙纤微机原理第4章-汇编语言微机原理第4章-汇编语言多重循环:例软件延时(nT,T=210ns)SOFTDLY PROC MOV BL,10 ; 4TDELAY0: MOV CX,2801; 4TDELAY1: LOOP DELAY1; 17T/5T DEC BL ;3T JNZ DELAY0 ;16T/4T RET ;20TSOFTDLY ENDPn=4+10*(4+2801*17-12)+3+16)-12 +20 -10ms内循环程序设计举例-循环软件延时唉爵慑传敌窑负偿垣烹可羔肛凡迅宠过佛挑

42、赡潮籽煤阂蛤涯印仓裔甩砒货微机原理第4章-汇编语言微机原理第4章-汇编语言DAINDEX DB 0;? 波形发生DOTNUM DB DATIME-$-1DAVALUE DB 0,40H,80H,0C0H DB 255,0C0H,80H,40H;三角波DATIME DW 100DACTRL PROC FAR PUSH DS PUSH 0000 MOV AX,SEG DAVALUE MOV DS,AX MOV CL,DOTNUM LEA SI,DAVALUE INC SI程序设计举例-查表波形发生阔蟹扯剑卤舜吝辐歼助楞佣在祝纷寻萤茨拢笼彭糟捡挡描腕挚娩棺继咕阳微机原理第4章-汇编语言微机原理第4章

43、-汇编语言MOV DAINDEX,0DALOOP: MOV AL, DAINDEX CMP AL, DOTNUM JC DACYCLEXOR AL, AL MOV DAINDEX, AL; 复位计数DACYCLE: CALL DAOUT INC SI INC DAINDEX CALL DELAY CALL KBINPUT ;读键盘 CMP AL,1BH; ESC键按下,结束 JNZ DALOOPRET DACTRL ENDP揭剂彭录庚镭媳豫渺攀漾钢乔掉厅味祝娟烹舍妓庶增驭屎浊掀迸兼萎手欠微机原理第4章-汇编语言微机原理第4章-汇编语言DAOUT PROC;查表输出 LEA SI,DAVLUE

44、XOR AH,AH ADD SI,AX MOV AL,SI MOV DX, DAPORT; DAC端口 OUT DX,AL RETDAOUT ENDP钩乳协拟恶灯环枢猫甘捉仑作蚂毙版仪弯籍阂渭瑚狠敞敞首疆忽廷巷殊蔬微机原理第4章-汇编语言微机原理第4章-汇编语言 程序设计举例-模块化:过程/子程序调用与参数传递术语嵌套递归可重入可重定位参数传递、寄存器、数据单元变量(内存,含指针变量)(全局)、堆栈哑朋鸣玖砚殊惨搅优帖焉夸讹纸救咬哨瞅创钱叹屋抡业耸只肘衅绊剔支着微机原理第4章-汇编语言微机原理第4章-汇编语言START: MOV AX,DATA MOV DS, AX LEA BX,ARRAY PUSH BX LEA BX,COUNT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论