您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 6-13上作业第2章(20139
第2章指令系统及汇编语言程序设计2.18088/8086的寻址方式2.28088/8086的指令系统作业讲解2.3汇编语言一.汇编语言源程序格式二.伪指令三.汇编语言源程序结构汇编语言程序的开发过程见2.4.3汇编语言程序的查错与调试汇编语言程序实验2.4汇编语言程序设计本次课内容上次课回顾-----与前面所学知识的衔接指令系统小结(见上次课件)上次课件:提问题1、2testal,80h;测试最高位jznext0;D7=0(ZF=1),转移movbx,00ffh;D7=1,顺序执行jmpdone;无条件转移next0:movbx,0done:hlt若AL最高位=0,设置BX=0;若AL最高位=1,设置BX=00FFH提问题1判断条件改为AL=3?AL3?AL次高位=1?AL最高位次高位皆为0?皆为1??movcx,400h;设置循环次数1K=1024=400Hmovax,2000hmovds,axmovsi,0;设置循环初值ds:si指向数据段源缓冲区开始20000H=2000H×16+0xorax,ax;和ax及进位CF清零again:addal,[si];循环体相加adcah,0incsi;SI指向下一个无符号数的存储单元地址loopagain;循环条件判定:循环次数减1,不为0转移(循环)hlt将数据段20000H开始的1K字节的8位无符号数的和存于AX提问题2?改为每个单元内容加2?加1?统计’a’的个数存AL?20000H开始改为10010H开始?变量SUM开始?addal,[si]及adcah,0可否改为addax,[si]?si可否改为di?cx可否改为di?循环程序结构loop作业讲解作业讲解作业1答案1.求(-127)10的原码、反码、补码?答案:原码=11111111B反码=10000000补码=100000012.进行二进制数(B)、十进制数(D)、十六进制数(H)之间的转换ABH=10101011B=171D3.描述D触发器、三态门的功能?4.描述芯片74LS373、74LS244、74LS138的功能?5.复习数字逻辑基础作业2答案1.8086CPU的CL、CS、CX、DS、DI、DX、DH、SS、SI、SP、IP这些寄存器中,哪些是8位寄存器?段寄存器?堆栈指针寄存器?[答案:8位寄存器CLDH;段寄存器CSDSSS;堆栈指针寄存器SP2.处理器利用CS:IP取得下一条要执行的指令,若CS=5677H,IP=0019H,求存放下一条要执行的指令内存的逻辑地址和物理地址?汇编语言编程时采用逻辑地址还是物理地址?[答案:逻辑地址5677H:0019H物理地址56789H编程用逻辑地址]3.总线信号中决定系统直接寻址存储器范围的是什么总线?[答案:地址]4.请将下述逻辑地址转化为物理地址①3017H:000AH②3015H:002AH③3010H:007AH[答案:物理地址皆为3017AH]作业3答案:1.访问I/O时8086CPU的M/IO*是什么电平?(低电平)8086CPU的3个最基本的读写控制信号是M/IO*、______和______。(WR*,RD*)2.8086CPU预取指令时,其引脚上将产生______总线操作;执行指令“MOVAX,[BX]”时在其引脚上将产生______总线操作;执行指令“MOV[BX],AX”时在其引脚上将产生______总线操作(存储器读;存储器读;存储器写)3.8086CPU访问接口用多少位地址线?可直接寻址多少内存空间?(16;1MB)作业4答案98HA32BEH87HA32BDH76HA32BCH54HA32BBH32HA32BAHB2HA32B9HA3HA32B8H内存物理地址1.判断哪些是非法指令POPDH(非法)MOV[1000H],[2000H](非法)MOVDS,2000H(非法)MOVDS,BX(合法)2.若DS=A345H,CX=3472H,BX=25B7H,求指令MOV[BX+5],CX内存操作数的逻辑地址?物理地址?偏移地址?段地址?(答案:逻辑地址=A345H:25BCH物理地址=A5A0CH偏移地址=25BCH段地址=A345H)3.(1)(3)指令有何区别?以下哪些指令执行后AX同?(设BX=3FFBH)(1)MOVAX,4000H(2)MOVAX,[BX](3)MOVAX,[4000H](4)MOVAX,[BX+5](答案:(1)(3)指令寻址方式不同;(3)(4)指令执行后AX同)4.设指令执行前DS=9AB8H,BX=873CH,AX=2345H,存储单元如图所示。问题:分别单独执行下列指令后AX=?(1)MOVAX,BX(2)MOVAX,[BX-1](3)LEAAX,[BX-1](4)SUBAX,[873CH](5)CMPAX,[873CH]答案:(1)AX=873CH(2)AX=7654H[BX-1]物理地址A32BB(3)AX=873BH=BX-1(4)AX=2345H-8776H=9BCFH[873CH]物理地址A32BC(5)AX=2345HAX不变作业讲解结束作业讲解结束求较大值—两无符号数AX、BX的较大值放入wmax(上次课件)汇编语言程序实例wmaxdw0cmpax,bx;比较AX和BXjncnext;若AX≥BX,转移xchgax,bx;若AX<BX,交换next:movwmax,ax简化段定义格式求较大值—两无符号数AX、BX的较大值放入wmax.modelsmall.data;定义数据段wmaxdw0.code;定义代码段start:movax,@data;程序起始点,建立DSmovds,axcmpax,bx;比较AX和BXjncnext;若AX≥BX,转移xchgax,bx;若AX<BX,交换next:movwmax,ax.exit0;程序正常执行结束endstart;汇编结束程序数据定义汇编语言程序实例2.3汇编语言汇编语言的特点汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序在有些应用领域,汇编语言的作用是不容置疑和无可替代的汇编程序设计的过程是与其他高级语言程序设计大致相同什么是汇编语言以助记符形式表示计算机指令助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号助记符是表明指令功能的英语单词或其缩写汇编格式指令以及使用它们编写程序的规则就形成汇编语言(AssemblyLanguage)汇编语言程序:用汇编语言书写的程序汇编程序:将汇编语言程序“汇编”成机器代码目标模块的程序汇编语言程序与汇编程序是两个概念硬指令和伪指令汇编程序将汇编语言源程序翻译成在机器上能执行的机器语言程序(目的代码程序硬指令---执行性语句使CPU产生动作、并在程序执行时才处理的语句,就是第2章学习的处理器指令与具体的处理器有关、与汇编程序无关。汇编后对应一条指令代码伪指令(Directive)---说明性语句不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等伪指令与具体的处理器类型无关,但与汇编程序的版本有关本课程采用微软宏汇编程序MASM6.15硬指令和伪指令采用易于记忆的符合表达,这就是助记符一.汇编语言源程序格式(4部分)标号硬指令的位置(逻辑地址),后加冒号:名字伪指令的位置或存储单元名称(变量名),后不加冒号:一般最多由31个字母、数字及规定的特殊符号(如_、$、?、@)组成不能以数字开头(如1ABC错),不能是保留字指令助记符必须有,其它3部分可无伪指令助记符----伪指令硬指令助记符-----硬指令注释语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性必要时,一个语句行也可以由分号开始作为阶段性注释汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理标号:硬指令助记符操作数1,操作数2;注释名字伪指令助记符参数1,参数2,…;注释例:硬指令Done:moval,02h伪指令Sumdb02h[标号]指令助记符[操作数][;注释]保留字保留字(ReservedWord)是汇编程序已经利用的标识符(也称为关键字),主要有:硬指令助记符——例如:MOV、ADD伪指令助记符——例如:DB、DW操作符——例如:OFFSET、PTR寄存器名——例如:AX、CS预定义符号——例如:@data汇编语言大小写不敏感汇编语言源程序格式---操作数操作数常数、数值表达式、寄存器、标号、变量等数值表达式一般是指由运算符连接的各种常数所构成的表达式汇编程序在汇编过程中计算表达式,最终得到一个确定的数值,所以也是常数常用的运算符是加减乘除(+-*/)例:movax,3*4+5;等价于movax,17汇编语言源程序格式---操作数操作数常数、寄存器、标号、数值表达式、变量等常数汇编时已确定的数据如硬指令中立即数二进制数如MOVAL,10110101B十进制常数如MOVAL,181十六进制数常数以字母开头的十六进制数前加“0”。例:MOVAL,0B5H字符和字符串常数例:MOVAX,'AB';AX4142hMOVAX,’1’;AX31h•用单引号括起来的单个字符或多个字符,其数值是每个字符对应的ASCII码的值.例如:'d'=64H,'AB'=4142H符号常数用符号名表示一个常数,可以提高程序的可读性,同时更具有通用性•符号定义伪指令格式•等价EQU伪指令符号名EQU表达式–例:XYEQU5•等号=伪指令符号名=表达式–例:XY=5例:XYEQU5MOVAH,XY;等价于MOVAH,5二.伪指令1.符号(常量)定义伪指令EQU符号常量使用符号名表达一个数值格式符号名EQU表达式例XEQU72.变量定义伪指令(定义数据伪指令)变量定义伪指令为变量申请固定长度的存储空间,同时将相应存储单元初始化(参数为?则不初始化)。格式为:变量名DB/DW/DD/DQ参数1,参数2,…DB(或BYTE)定义字节其后每个参数占1个字节存储单元DW(或WORD)定义字其后每个参数占2个字节(先低字节后高字节)存储单元DD(或DWORD)定义双字其后每个参数占4个字节存储单元DQ(或QWORD)定义4个字其后每个参数占8个字节存储单元。多个存储单元如果初值相同,可以用复制操作符DUP进行定义:重复次数DUP(重复参数)变量实质指内存单元的数据,变量需要事先定义才能使用.定义后的变量可用变量名等引用其中的数据,即变量的数值例:alphadb30h,2DUP(55H),?,34hmovcx,alpha;cx5530hmovbx,offsetalphamoval,[bx+4];al34h变量定义伪指令最常使用字节变量定义实例;数据段Xdb61h,0fbhdb2dup(64h),?Ydb'ABC'应用moval,XdecX+1movY,alASCII‘a’=61h’A’=41h‘B’=42h‘C’=43h;此处X表示它的第1个数据,故AL←61h;对X为始的第2个数据减1,故为0fah;Y=al=61h,现在Y这个字符串成为'aBC'定义字单元伪指令DWDW伪指令用于分配一个或多个字单元,并可以将它们初始化为指定值初值表中每个数据一定是字量(Word),一个字单元可用于存放任何16位数据:一个段地址一个偏移地址两个字符0~65535之间的无符号数-32768~+32767之间的带符号数字变量定义实例;数据段countdw8000h,?,'AB'maxintequ64hnumberdwmaxintarraydwmaxintdup(0)ASCII’A’=41h‘B’=42h3.宏(Macro)命令伪指令为简化程序编制,对多次使用的程序,既可用子程序也可用宏指令、宏汇编实现宏定义宏是具有宏命令名的一段汇编语句序列宏命令名MACRO[形参数1,参数2,…]……;宏定义体(硬指令、伪指令)ENDM宏调用宏命令名[实参数1,参数2,…]宏需要先
本文标题:6-13上作业第2章(20139
链接地址:https://www.777doc.com/doc-2930419 .html