收藏 分销(赏)

微机原理及接口技术课后习题及参考答案.doc

上传人:人****来 文档编号:4298619 上传时间:2024-09-04 格式:DOC 页数:66 大小:107.59KB 下载积分:14 金币
下载 相关 举报
微机原理及接口技术课后习题及参考答案.doc_第1页
第1页 / 共66页
微机原理及接口技术课后习题及参考答案.doc_第2页
第2页 / 共66页


点击查看更多>>
资源描述
第一章课后习题 1.1把下列十进制数转换成二进制数、八进制数、十六进制数。 ①16.25②35.75③123.875④97/128 1.2把下列二进制数转换成十进制数。 ①10101.01②11001.0011③111.01④1010.1 1.3把下列八进制数转换成十进制数和二进制数。 ①756.07②63.73③35.6④323.45 1.4把下列十六进制数转换成十进制数。 ①A7.8②9AD.BD③B7C.8D④1EC 1.5求下列带符号十进制数的8位补码。 ①+127②-1③-0④-128 1.6求下列带符号十进制数的16位补码。 ①+355②-1 1.7计算机分那几类?各有什么特点? 1.8简述微处理器、微计算机及微计算机系统三个术语的内涵。 1.980X86微处理器有几代?各代的名称是什么? 1.10你知道现在的微型机可以配备哪些外部设备? 1.11微型机的运算速度与CPU的工作频率有关吗? 1.12字长与计算机的什么性能有关? 习题一参考答案 1.1①16.25D=10000.01B=20.2Q=10.4H ②35.75D=100011.11B=43.6Q=23.CH ③123.875D=1111011.111B=173.7Q=7B.EH ④97/128D=64/123+32/128+1/128=0.1100001B=0.604Q=0.C2H 1.2①10101.01B=21.25D②11001.0011B=25.1875D ③111.01B=7.25D④1010.1B=10.5D 1.3①②63.73Q=110011.111011B=51.922D ③35.6Q=11101.110B=29.75D④ 1.4①A7.8H=167.5D②9AD.BDH=2477.738D ③B7C.8D=2940.551D④1ECH=492D 1.5①[+127]补=01111111②[-1]补= ③[-0]补=00000000④[-128]补 1.6①[+355]补=②[-1]补=1111111111111111 1.7答:传统上分为三类:大型主机、小型机、微型机。大型主机一般为高性能的并行处理系统,存储容量大,事物处理能力强,可为众多用户提供服务。小型机具有一定的数据处理能力,提供一定用户规模的信息服务,作为部门的信息服务中心。微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好。 1.8答:微处理器是微计算机系统的核心硬件部件,对系统的性能起决定性的影响。微计算机包括微处理器、存储器、I/O接口电路及系统总线。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。 1.9答:从体系结构上可分为5代:4004:4位机;8080/8085:8位机;8086/8088/80286:16位机;80386/80486:32位机;Pentium系列机:64位。 第二章课后习题 2.1、EU与BIU各自的功能是什么?如何协同工作? 2.2、8086/8088微处理器内部有那些寄存器,它们的主要作用是什么? 2.3、8086对存储器的管理为什么采用分段的办法? 2.4、在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。 2.5、给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。 2.6、8086/8088为什么采用地址/数据引线复用技术? 2.7、8086与8088的主要区别是什么? 2.8、怎样确定8086的最大或最小工作模式?最大、最小模式产生控制信号的方法有何不同 2.9、8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序? 2.10、8086基本总线周期是如何组成的?各状态中完成什么基本操作? 2.11、在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接的? BHE#信号起什么作用? 2.12、80X86系列微处理器采取与先前的微处理器兼容的技术路线,有什么好处?有什么不足? 2.13、80386内部结构由哪几部分组成?简述各部分的作用。 2.14、80386有几种存储器管理模式?都是什么? 2.15、在不同的存储器管理模式下,80386的段寄存器的作用是什么? 2.16、描述符的分类及各描述符的作用。 2.17、80386的分段部件是如何将逻辑地址变为线性地址的? 2.18、803866中如何把线性地址变为物理地址? 习题二参考答案 1、答:EU是执行部件,主要的功能是执行指令。BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。 2、答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。 3、答:8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围(1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空间。 4、答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。 5、答:物理地址:320F8H。 6、答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。 7、答:8086有16条数据信号引线,8088只有8条;8086片内指令预取缓冲器深度为6字节,8088只有4字节。 8、答:引线MN/MX#的逻辑状态决定8086的工作模式,MN/MX#引线接高电平,8086被设定为最小模式,MN/MX#引线接低电平,8086被设定为最大模式。 最小模式下的控制信号由相关引线直接提供;最大模式下控制信号由8288专用芯片译码后提供,8288的输入为8086的S2#~S0#三条状态信号引线提供。 9、答:标志寄存器、IP、DS、SS、ES和指令队列置0,CS置全1。处理器从FFFFOH存储单元取指令并开始执行。 10、答:基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。 11、答:8086为16位处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节的存储体,命名为偶字节体和奇字节体;偶体的数据线连接D7~D0,“体选”信号接地址线A0;奇体的数据线连接D15~D8,“体选”信号接BHE#信号;BHE#信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问。 12、答:好处是先前开发的软件可以在新处理器组成的系统中运行,保护了软件投资。缺点是处理器的结构发展受到兼容的约束,为了保持兼容性增加了硅资源的开销,增加了结构的复杂性。 13、答:80386内部结构由执行部件(EU)、存储器管理部件(MMU)和总线接口部件(BIU)三部分组成。EU包括指令预取部件、指令译码部件、控制部件、运算部件及保护检测部件,主要功能是执行指令。存储器管理部件包括分段部件、分页部件,实现对存储器的分段分页式的管理,将逻辑地址转换成物理地址。总线接口部件作用是进行片外访问:对存储器及I/O接口的访问、预取指令;另外的作用是进行总线及中断请求的控制 14、答:80386有三种存储器管理模式,分别是实地址方式、保护方式和虚拟8086方式 15、答:在实地址方式下,段寄存器与8086相同,存放段基地址。在保护方式下,每个段寄存器还有一个对应的64位段描述符寄存器,段寄存器作为选择器存放选择符。在虚拟8086方式下,段寄存器的作用与8086相同。 16、答:描述符分为三类:存储器段描述符、系统段描述符、门描述符。存储器段描述符由8字节组成,它用来说明一个段中保存信息的情况。32位段基地址和20位段界限值定位了该段在存储空间中的位置,其它有关位决定访问权限及段的长度单位。系统段描述符与存储器段描述符大多数字节段相同,有关访问权及属性字节段有些不同。门描述符用来改变程序的特权级别、切换任务的执行以及指出中断服务程序的入口。 17、答:分段部件根据段选择符从全局描述符表或局部描述符表中取出对应的段描述符。把段描述符32位段基地址与逻辑地址中的32位偏移量相加就形成了线性地址。 18、答:分段部件形成的32位线性地址中高10位作为寻址页目录表的偏移量,与控制寄存器CR3中页目录表基地址共同形成一个32位的地址指向页表中的一个页项,即为一个页面描述符。该页面项中高20位作为页面基地址,线性地址的低12位为偏移量,相加后形成指向某一存储单元的32位物理地址。若禁止分页功能,线性地址就是物理地址。 第三章课后习题 3.1、8086/8088微处理器有哪些寻址方式?并写出各种寻址方式的传送指令2条(源操作数和目的操作数寻址)。 3.2、有关寄存器和内存单元的内容如下: DS=2000H,SS=1000H,BX=0BBH,BP=02H,SI=0100H,DI=0200H,(200BBH)=1AH,(201BBH)=34H,(200CCH)=68H,(200CDH)=3FH,(10202H)=78H,(10203H)=67H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(201CCH)=56H,(201CDH)=5BH,(201BCH)=89H,(200BCH)=23H,试写出下表中源操作数的寻址方式和寄存器AX的内容。 表3-7习题1 指令 源操作数寻址方式 AX的内容 MOVAX,1200H MOVAX,BX MOVAX,[1200H] MOVAX,[BX] MOVAX,[BX+11H] MOVAX,[BX+SI] MOVAX,[BX+SI+11H] MOVAX,[BP+DI] 3.3、指出下列语句的错误。 (1)MOV[SI],34H (2)MOV45H,AX (3)INC12 (4)MOV[BX],[SI+BP+BUF] (5)MOVBL,AX (6)MOVCS,AX (7)OUT240H,AL (8)MOVSS,2000H (9)LEABX,AX (10)XCHGAL,78H 3.4、已知DS=2000H,(21000H)=2234H,(21002H)=5566H,试区别以下3条指令。 MOVSI,[1000H] LEASI,[1000H] LDSSI,[1000H] 3.5、简述堆栈的性质。如果SS=9B9FH,SP=200H,连续执行两条PUSH指令后,栈顶的物理地址是多少?SS,SP的值是多少?再执行一条POP指令后,栈顶的物理地址又是多少?SS、SP的值又是多少? 3.6、写出将AX和BX寄存器内容进行交换的堆栈操作指令序列,并画出堆栈变化过程示意图。 3.7、用两条指令把FLAGS中的SF位置1。 3.8、用一条指令完成下列各题。 (1)AL内容加上12H,结果送入AL。 (2)用BX寄存器间接寻址方式把存储器中的一个内存单元加上AX的内容,并加上CF位,结果送入该内存单元。 (3)AX的内容减去BX的内容,结果送入AX。 (4)将用BX、SI构成的基址变址寻址方式所得到的内容送入AX。 (5)将变量BUF1中前两个字节的内容送入寄存器SI中。 3.9、下面的程序段执行后,DX、AX的内容是什么? MOVDX,0EFADH MOVAX,1234H MOVCL,4 SHLDX,CL MOVBL,AH SHLAX,CL SHRBL,CL ORDL,BL 3.10、写出下面的指令序列中各条指令执行后的AX内容。 MOVAX,7865H MOVCL,8 SARAX,CL DECAX MOVCX,8 MULCX NOTAL ANDAL,10H 3.11、如果要将AL中的高4位移至低4位,有几种方法?请分别写出实现这些方法的程序段。 3.12、利用串操作指令,将AREA1起始的区域1中的200个字节数据传送到以AREA2为起始地址的区域2(两个区域有重叠)。 3.13、寄存器BX中有4位0~F的十六进制数,编写程序段,将其转换为对应字符(即ASCII码),按从高到低的顺序分别存入L1、L2、L3、L4这4个字节单元中。 3.14、试将BUF起始的100个字节的组合BCD码数字,转换成ASCII码,并存放在以ASC为起始地址的单元中。已知高位BCD码位于较高地址中。 3.15、请给出以下各指令序列执行完后目的寄存器的内容。 (1)MOVBX,-78 MOVSXEBX,BX (2)MOVCL,-5 MOVSXEDX,CL (3)MOVAH,9 MOVZXECX,AH (4)MOVAX,87H MOVZXEBX,AX 3.16、请给出以下各指令序列执行完后EAX和EBX的内容。 MOVECX, BSFEAX,ECX BSREBX,ECX 3.17、给以TAB为首地址的100个ASCII码字符添加奇偶校验位(bit7),使每个字节中的“1”的个数为偶数,在顺序输出到10H号端口。 3.18、编写一段程序,要求在长度为100H字节的数组中,找出正数的个数并存入字节单元POSIT中,找出负数的个数并存入字节单元NEGAT中。 习题三参考答案 3.1答:寻址方式是指计算机在执行指令时寻找操作数的方式。8086/8088微处理器有以下几种寻址方式: ①立即寻址。操作数(仅限源操作数)直接放在指令中。例如:movcx,100;movah,20h。 ②寄存器寻址。操作数在CPU的内部寄存器中。例如:moves,ax;movdl,bh。 ③直接寻址。指令中直接给出了操作数的偏移地址。例如:movax,[3000h];movbuf,100。 ④寄存器间接寻址。操作数的偏移地址放在寄存器bp,bx,si,di四个寄存器中的一个里。例如:movax,[si];mov[bx],cx。 ⑤寄存器相对寻址。操作数的有效地址为基址寄存器或变址寄存器的内容与指令中指定的位移量之和。例如:movax,cnt[si];movstr[bx],ax。 ⑥基址变址寻址。操作数的有效地址是一个基址寄存器和一个变址寄存器的和。例如:movax,[si+bx];mov[bx+di],dx。 ⑦相对基址变址寻址。操作数的有效地址为一个基址寄存器、一个变址寄存器的内容与指令中指定的位移量三者之和。例如:movax,cnt[bx][si];movcnt[bx][si],ax。 3.2.答: 指令 源操作数寻址方式 AX的内容 MOVAX,1200H 立即寻址 1200H MOVAX,BX 寄存器寻址 0BBH MOVAX,[1200H] 直接寻址 4C2AH MOVAX,[BX] 寄存器间接寻址 231AH MOVAX,[BX+11H] 寄存器相对寻址 3F68H MOVAX,[BX+SI] 基址变址寻址 8934H MOVAX,[BX+SI+11H] 相对基址变址寻址 5B56H MOVAX,[BP+DI] 基址变址寻址 6778H 3.3答: (1)MOV[SI],34H;目的操作数必须指出是字节操作还是字操作,比如可改成MOVBYTEPTR[SI],34H (2)MOV45H,AX;目的操作数不能是立即数 (3)INC12;操作数不能是立即数 (4)MOV[BX],[SI+BP+BUF];两个操作数不能同是存储单元 (5)MOVBL,AX;操作数不匹配 (6)MOVCS,AX;CS不能作为目的操作数 (7)OUT240H,AL;对于IN和OUT指令,端口号大于FFH时,必须先将端口号放入DX寄存器中 (8)MOVSS,2000H;段寄存器不能用立即数来赋值,可改成MOVSS,AX (9)LEABX,AX;源操作数必须是内存,如LEABX,BUFFER (10)XCHGAL,78H;交换指令不能对立即数操作 3.4答:MOVSI,[1000H];(SI)=2234H LEASI,[1000H];(SI)=1000H LDSSI,[1000H];(SI)=2234H,(DS)=5566H 3.5答:先进后出。 9BBF0H-4=9BBECH 9BBECH+2=9BBEEH 3.6答:PUSHAX PUSHBX POPAX POPBX 3.7答:MOVAX,7FH ADDAX,1 3.8答:⑴ADDAL,12H ⑵ADC[BX],AX ⑶SUBAX,BX ⑷MOVAX,[BX+SI] ⑸MOVSI,BUF1 3.9答:DX=FAD1H,AX=2340H 3.10答:AX=300H 3.11答:①循环左移 movcl,4 rolal,cl ②循环右移 movcl,4 roral,cl ③右移 movcl,4 shral,cl 3.12答:从末端开始传送即可解决重叠问题。 movcx,200 movsi,offsetaera1 addsi,200 movdi,offsetaere2 adddi,200 std;DF=1,进行地址减量 repmovsb 3.13答: MOVCL,4 MOVAL,BL;处理最低位十六进制数 ANDAL,0FH CMPAL,0AH JCDIGT4 ADDAL,7 DIGT4:ADD,AL,30H MOVL4,AL MOVAL,BL;处理次低位十六进制数 SHRAL,CL CMPAL,0AH JCDIGT3 ADDAL,7 DIGT3:ADD,AL,30H MOVL3,AL MOVAL,BH;处理次高位十六进制数 ANDAL,0FH CMPAL,0AH JCDIGT2 ADDAL,7 DIGT2:ADD,AL,30H MOVL2,AL MOVAL,BH;处理最高位十六进制数 SHRAL,CL CMPAL,0AH JCDIGT1 ADDAL,7 DIGT1:ADD,AL,30H MOVL1,AL 3.14答: LEASI,BUF LEABX,ASC MOVCH,100 MOVCL,4 AGAIN:MOVAL,[SI];处理低位BCD码 ANDAL,0FH ADDAL,30H MOV[BX],AL INCBX MOVAL,[SI];处理高位BCD码 SHRAL,CL ADDAL,30H MOV[BX],AL INCBX INCSI DECCH JNZAGAIN 3.15答:(1)MOVBX,-78;(BX)=FFB2H MOVSXEBX,BX;(EBX)=FFFFFFB2H (2)MOVCL,-5;(CL)=FBH MOVSXEDX,CL;(EDX)=FFFFFFFBH (3)MOVAH,9;(AH)=9H MOVZXECX,AH(ECX)=00000009H (4)MOVAX,87H;(AX)=87H MOVZXEBX,AX;(EBX)=00000087H 3.16答:MOV BSFEAX,ECX;(EAX)=00000003H BSREBX,ECX;(EBX)=0000001CH 3.17答: MOVCX,100 LEABX,TAB AGN:MOVAL,[BX] ADDAL,0 JPNEXT ORAL,80H NEXT:OUT10H,AL INCBX LOOPAGN 3.18答:假设数组的起始地址是BUFFER LEABX,BUFFER MOVDX,0 MOVCX,100 ONCE:MOVAL,[BX] TESTAL,80H;是正数还是负数 JNZFUSHU;是负数,跳转 CMPAL,0;是0吗? JZNEXT INCDH;是正数,则DH加1 JMPNEXT FUSHU:INCDL;是负数,则DL加1 NEXT:INCBX DECCX JNZONCE MOVPOSIT,DH MOVNEGAT,DL 第四章课后习题 4.1、汇编语言有何特点?编写汇编语言源程序时,一般的组成原则是什么? 4.2、.MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪几种存储模式,各用于创建什么性质的程序? 4.3、如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程? 4.4、逻辑段具有哪些属性?完整代码段定义时的默认属性是什么?小型模式下的简化代码段定义具有的默认属性是什么? 4.5、DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么? 4.6、给出下列语句中,指令立即数(数值表达式)的值: (1)moval,23hAND45hOR67h (2)movax,1234h/16+10h (3)movax,254hSHL4 (4)moval,’a’AND(NOT(‘b’一‘B’)) (5)movax,(76543LT32768)XOR7654h 4.7、画图说明下列语句分配的存储空间及初始化的数据值: (1)byte_vardb‘BCD’,10,10h,’EF’,2dup(一l,?,3dup(4)) (2)word_vardw1234h,一5,6dup(?) 4.8、设置一个数据段,按照如下要求定义变量: (1)myl_b为字符串变量,表示字符串“PersonalComputer!” (2)my2_b为用十六进制数表示的字节变量,这个数的大小为100 (3)my3_w为100个未赋值的字变量 (4)my4_c为100的符号常量 (5)my5_c为字符串常量,代替字符串“PersonalComputer!” 4.9、假设opw是一个字变量,opbl和opb2是两个字节变量,指出下列语句中的具体错误原因并改正错误。 (1)movbyteptr[bx],256 (2)movbx,offsetopw[si] (3)addopbl,opb2 (4)movopbl,al+l (5)subal,opw (6)mov[di],1234h 4.10、编制一个程序,把字变量X和Y中数值较大者存入MAX字单元;若两者相等,则把-1存入MAX中。假设变量存放的是有符号数。 4.11、设变量DAT为有符号16位数,请编写程序将它的符号状态保存在sign字节单元,即:如果变量值大于等于0,保存0;如果变量值小于0,保存-1。 4.12、X、Y和Z是3个有符号字节数据,编写一个比较相等关系的程序: (1)如果这3个数都不相等,则显示N; (2)如果这3个数中有两个数相等,则显示X; (3)如果这3个数都相等,则显示Y。 4.13、编制程序完成12H,23H,F3H,6AH,20H,FEH,10H,C8H,25H和34H共10个无符号字节数据之和,并将结果存入字变量SUM中。 4.14、求出主存从2000H:0开始的一个64KB物理段中共有的空格个数,存入DX中。 4.15、过程定义的一般格式是什么?子程序开始为什么常有PUSH指令,返回前为什么有POP指令?下面完成16位无符号数累加的子程序是否正确?若有错,请改正。 jiafaPROC pushax xorax,ax xordx,dx again:addax,[bx] adcdx,0 incbx incbx loopagain ret ENDPjiafa 4.16、编写一个程序,统计寄存器AX中二进制数位“0”的个数,结果以二位十进制数形式显示到屏幕上。 4.17、子程序的参数传递有哪些方法? 4.18、编写一个求32位数据补码的子程序,通过寄存器传递入口参数。 4.19、所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。编写一个计算字节校验和的子程序。主程序提供入口参数:数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。 4.20、编制一个子程序,把一个16位二进制数用4位16进制形式在屏幕上显示出来。 4.21、在以BUF为首地址的字缓冲区中有3个无符号数,编程将这3个数按升序排列,结果存回原缓冲区。 4.22、在DAT字节单元中有一个有符号数,判断其正负,若为正数,则在屏幕上显示“+”号;若为负数,则显示“-”号;若是0,则显示0。 4.23、编程求1~400中所有奇数的和,结果以十六进制数形式显示到屏幕上。 4.24、在以DAT为首地址的字节缓冲区中存有100H个无符号字节数据,编程求其最大值与最小值之和,结果存入RESULT字单元。 4.25、在内存单元CNT中有一个字数据,编程将其二进制数显示到屏幕上。 4.26、在以STRG为首地址的缓冲区中有一组字符串,长度为100,编程实现将其中所有的英文小写字母转换成大写字母,其它的不变。 4.27、在以DAT为首地址的内存中有100个无符号数(数的长度为字),编程统计其中奇数的个数,结果以十进制形式显示到屏幕上。要求分别用子程序完成奇数个数统计,用宏完成十进制数显示。 4.28、编写一段程序,使汇编程序根据SIGN的值分别产生不同的指令。 如果SIGN=0,则用字节变量DATB中的无符号数除以字节变量SCALE;如果SIGN=1,则用字节变量DATB中的有符号数除以字节变量SCALE,结果都存放在字节变量RESULT中。 习题四参考答案 4.1答:汇编语言是计算机能够提供给用户使用的最快速有效的语言,它是以处理器指令系统为基础的低级程序设计语言,采用助记符表示指令操作码,采用标识符表示指令操作数。利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序。在对程序的空间和时间要求高的应用领域,汇编语言的作用是不容置疑和无可替代的。然而,汇编语言作为一种低级语言也存在很多不足,例如,功能有限、编程难度大、依赖处理器指令,这也限制了它的应用范围。 汇编语言源程序由若干语句组成,通常,这些语句可以分为3类,分别是: (1)指令语句;(2)宏指令语句;(3)伪指令语句。汇编语言也由段组成,8086/8088按照逻辑段组织程序,具有代码段、数据段、附加段和堆栈段,段与段之间的顺序可以任意排列。需要独立运行的程序必须包含一个代码段,一个程序只有一个起始点,且必须指示程序的起始点。 4.2答:七种存储模型: ①Tiny所有数据和代码都放在一个段内,其数据和代码都是近访问。Tiny程序可以写成.COM文件格式,COM程序必须从0100H的存储单元开始。这种模型一般用于小程序。 ②Small所有数据放在一个64KB的数据段内,所有代码放在另一个64KB的代码段内,数据和代码也都是近访问的。这是一般应用程序最常用的一种模型。 ③Medium代码使用多个段,一般一个模块一个段,而数据则合并成一个64KB的段组。这样,数据是近访问的,而代码则可远访问。 ④Compact所有代码都放在一个64KB的代码段内,数据则可放在多个段内,形成代码是近访问的,而数据则可为远访问的格式。 ⑤Large代码和数据都可用多个段,所以数据和代码都可以远访问。 ⑥Huge与Large模型相同,其差别是允许数据段的大小超过64KB。 ⑦Flat允许用户用32位偏移量,但DOS下不允许使用这种模型,只能在OS/2下或其他保护模式的操作系统下使用。MASM5版本不支持这种模型,但MASM6可以支持。 4.3答:需要使用一个标号,如start。对于有数据段的程序,简化段定义下应该这样开始: start:movax,@data movds,ax 汇编语言程序设计过程中,有多种返回DOS的方法,但一般用DOS功能调用的4CH子功能来实现。应用程序的终止代码是: movax,4c00h int21h 汇编结束是指汇编程序结束将源程序翻译成目标模块代码的过程。源程序的最后必须有一条end伪指令:end[标号];其中,可选的标号是程序指定的开始执行点,连接程序以此设置CS和IP。如: endstart 4.4答:逻辑段具有4个属性:(1)定位类型(align_type)说明段的起始地址应有怎样的边界值;(2)组合类型(combine_type)说明程序连接时的段合并方法;(3)使用类型(use_type)只适用于386及其后继机型,它用来指定寻址方式。(4)类别(‘class’)在引号中给出连接时组成段组的类型名。 完整代码段定义时的默认属性是:PARA、PRIVATE、USEl6 4.5答:COM和EXE程序结构。EXE程序有独立的代码段、数据段和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB。COM程序只有一个逻辑段,其中包含数据区、代码区和堆栈区,程序代码长度不超过64KB,程序从100H处开始执行。 4.6答:(1)moval,23hAND45hOR67h;67H (2)movax,1234h/16+10h;133H (3)movax,254hSHL4;2540H (4)moval,’a’AND(NOT(‘b’-‘B’));21H (5)movax,(76543LT32768)XOR7654h;89ABH 4.7.答:(1) 42H 43H 44H 0AH 10H 45H 46H FFH - 04H 04H 04H FFH - 04H 04H 04H (2) 34H 12H FBH FFH - - - - - - - - - - - - 4.8答:(1)myl_bdb‘PersonalComputer!’ (2)my2_bdb64H (3)my3_wdw100dup(?) (4)my4_cequ100 (5)my5_cequ<PersonalComputer!> 4.9答:(1)movbyteptr[bx],256;改正――movwordptr[bx],256 (2)movbx,offsetopw[si];改正――movbx,offsetopw (3)addopbl,opb2;改正――addal,opb2 (4)movopbl,al+l;改正――movopbl,al (5)subal,opw;改正――subal,opb1 (6)mov[di],1234h;改正――movwordptr[di],1234h 4.10答: .MODELSMALL .DATA XDW1234H YDW4321H MAXDW? .CODE START:MOVAX,@DATA MOVDS,AX MOVAX,X CMPAX,Y JNZNEQU MOVMAX,0FFFFH JMPSTOP NEQU:JCNEXT MOVMAX,X JMPSTOP NEXT:MOVMAX,Y STOP:MOVAX,4C00H INT21H ENDSTART 4.11答:.MODELSMALL .DATA DATDW9234H SIGNDW? .CODE START:MOVAX,@DATA MOVDS,AX MOVAX,DAT CMPAX,0 JZSTOP TESTAX,8000H JNZFU MOVSIGN,0 JMPSTOP FU:MOVSIGN,0FFH STOP:MOVAX,4COOH INT21H ENDSTART 4.12答: DISPLAYMACRO MOVAH,2 INT21H ENDM .MODELSMALL .DATA XDW1230H YDW1234H ZDW1234H .CODE START:MOVAX,@DATA MOVDS,AX MOVAX,X MOVBX,Y CMPAX,Z JNZN1 CMPAX,BX JNZN2 MOVDL,'Y' DISPLAY STOP:MOVAX,4C00H INT21H N1:CMPAX,BX JNZN3 N2:MOVDL,'X' DISPLAY JMPSTOP N3:CMPBX,Z JNZN4 JMPN2 N4:MOVDL,'N' DISPLAY JMPSTOP ENDSTART 4.13答: .MODELSMALL .DATA DATDB12H,23H,0F3H,6AH,20H,0FEH,10H,C8H,25H,34H SUMDW? .CODE START:MOVAX,@DATA MOVDS,AX MOVCX,10 MOVDX,0 LEABX,DAT AGAIN:MOVAL,[BX] CBW MOVDX,AX INCBX LOOPAGAIN MOVSUM,DX MOVAX,4C00H INT21H ENDSTART 4.14答: .MODELSMALL .CODE START:MOVAX,2000H MOVDS,AX MOVSI,0 MOVDX,0 MOVCX,0FFFFH AGAIN:MOVAL,[SI] CMPAL,20H JNZNEXT INCDX NEXT:INCSI LOOPAGAIN MOVAX,4C00H INT21H ENDSTART 4.15.答:procnamePROC[attributesfield][USESregisterlist][,parameterfield] ┇ ProcnameENDP push和pop的使用是为了保护子程序的调用的现场,比如寄存器的值。本例中要保护的寄存器是ax和dx。 jiafaPROC;用CX,BX传参数――数据的个数和数据的起始地址,结果放在字内存单元SUM和SUM+1 pushax pushdx xorax,ax xordx,dx again:addax,[bx] adcdx,0 incbx incbx loopagain movsum,ax mov[sum+1],dx popdx popax ret jiafaENDP 4.16答: .MODELSMALL .CODE START:MOVCX,16 MOVBL,0;BL中放0的个数 AGN:SHLAX,1;数0的个数 JCNEXT INCBL NEXT:LOOPAGN MOVAL,BL DAA MOVDL,AL;显示高位 ANDDL,0F0H MOVCL,4 SHRDL,CL A
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服