资源描述:
《计算机组成技术ch》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机组成技术李东计算机科学与技术学院lidong@pact518.hit.edu.cn第六章汇编语言及其程序设计6.1汇编程序及其开发过程6.2指令格式及寻址方式6.38086宏汇编语言的基本语法6.4顺序结构程序设计6.5分支结构程序设计6.6循环结构程序设计6.7子程序设计6.1汇编语言程序及开发过程基本概念汇编语言:是一种面向机器的程序设计语言,它是机器语言的符号化描述。特点:代码短、空间省、效率高汇编语言源程序:用汇编语言编写的程序目标程序:汇编语言源程序经翻译程序翻译成的代码程序(即机器语言的程序)。汇编程序:把源程序转变为相应目标程序的翻译
2、程序宏汇编:不仅包含一般汇编语言的功能,而且采用了高级语言使用的数据结构,是一种接近高级语言的汇编语言。汇编语言程序的开发过程编写源程序:EDIT(DOS),TextPad(Windows)将源程序保存为XXXX.asm文件使用MASM生成目标程序XXXX.obj使用LINK生成可执行程序XXXX.exe源程序XXX.asm目标程序XXX.obj可执行程序XXX.exe设计编辑用MASM汇编用LINK连接执行汇编语言源程序的开发过程基本汇编语言程序实例DATASEGMENTStringDB‘汇编程序设计’,”$”DATAENDSCODESEGMENTAS
3、SUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX(具体的操作指令)CODEENDSSTACKSEGMENTSTACKDB256DUP(?)STACKENDSENDSTARTAH=9时,INT21的功能:显示字符串DS:DX为串地址字符串以“$”结尾AH=4C时,INT21的功能:带返回码终止返回码保存在AL中。(8)MOVDX,OFFSETString(9)MOVAH,9(10)INT21H(11)MOVAX,4C00H(12)INT21H汇编语言源程序的开发过程开始结束用编辑工具编辑源程序源程序X
4、XXX.asm用MASM进行汇编有语法错误?YN目标文件XXXX.obj用LINK连接有错误?YN执行可执行文件XXXX.exe正确?NY用DEBUG调试6.1.4结构化程序设计1.程序设计的基本步骤分析问题确定处理方案确定具体操作步骤,绘制流程图编写程序调试并运行程序,得到预期结果整理输出结果,写出有关文档资料2.流程图的画法起止框执行框流程线条件满足?条件满足?YYNN判断框AA连接点6.2指令格式及寻址方式6.2.1指令格式操作码操作数OPCODEDW0127形式1方向位0:REG字段指出的寄存器为源操作数寄存器1:REG字段指出的寄存器为目的操作
5、数寄存器字位,0:参加运算的操作数为字节操作数1:参加运算的操作数为字操作数6.2.1指令格式(续)OPCODEDW0127形式3DATA/DISPDATA/DISP1~2个字节1~2个字节OPCODEDW0127形式2MODREGR/MDATA/DISPDATA/DISP1~2个字节1~2个字节MOD字段编码表MOD含义MOD含义00存储器方式,无位移量01存储器方式,有8位位移量10存储器方式,有16位位移量11寄存器方式,无位移量REGW=1W=0REGW=1W=0000AXAL100SPAH001CXCL101BPCH010DXDL110SIDH
6、011BXBL111DIBHREG字段编码表存储器方式寄存器方式有效地址的计算公式W=0W=100011011000(BX)+(SI)(BX)+(SI)+D8(BX)+(SI)+D16ALAX001(BX)+(DI)(BX)+(DI)+D8(BX)+(DI)+D16CLCX010(BP)+(SI)(BP)+(SI)+D8(BP)+(SI)+D16DLDX011(BP)+(DI)(BP)+(DI)+D8(BP)+(DI)+D16BLBX100(SI)(SI)+D8(SI)+D16AHSP101(DI)(DI)+D8(DI)+D16CHBP110D16(BP
7、)+D8(BP)+D16DHSI111(BX)(BX)+D8(BX)+D16BHDIMODR/M指令第2字节指示的另外一个操作数6.2.28086/8088常用指令集(1)数据传送指令(14条)数据传送MOV堆栈操作PUSH,POP交换XCHG输入、输出IN,OUT转换XLAT地址传送LEA,LDS,LES标志传送PUSHF,POPF,LAHF,SAHF(2)算术运算指令(20条)加法ADD,ADC,AAA,DAA加“1”INC减法SUB,SBB,AAS,DAS减“1”DEC比较CMP求补NEG乘法MUL,IMUL,AAM除法DIV,IDIV,AAD符号
8、扩展CBW,CWD(3)逻辑运算指令(13条)逻辑乘(与)AND逻辑加(或)OR