微机基础原理及接口技术课后习题集及参考材料标准答案.doc
-/ 第一章 课后习题1.1 把下列十进制数转换成二进制数、八进制数、十六进制数。 16.25 35.75 123.875 97/1281.2 把下列二进制数转换成十进制数。 10101.01 11001.0011 111.01 1010.11.3 把下列八进制数转换成十进制数和二进制数。 756.07 63.73 35.6 323.451.4 把下列十六进制数转换成十进制数。 A7.8 9AD.BD B7C.8D 1EC1.5 求下列带符号十进制数的8位补码。 +127 1 0 -1281.6 求下列带符号十进制数的16位补码。 +355 1 1.7 计算机分那几类?各有什么特点?1.8 简述微处理器、微计算机及微计算机系统三个术语的内涵。1.9 80X86微处理器有几代?各代的名称是什么?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.C2H1.2 10101.01B=21.25D 11001.0011B=25.1875D 111.01B=7.25D 1010.1B=10.5D1.3 756.07Q=111101110.000111B=494.109D 63.73Q=110011.111011B=51.922D 35.6Q=11101.110B=29.75D 323.45Q=11010011.100101B=211.578D1.4 A7.8H=167.5D 9AD.BDH=2477.738D B7C.8D=2940.551D 1ECH=492D1.5 +127补=01111111 1 补= 11111111 0 补=00000000 -128 补=100000001.6 +355 补= 0000000101100011 1 补= 1111 1111 1111 11111.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字节的存储体,命名为偶字节体和奇字节体;偶体的数据线连接D7D0,“体选”信号接地址线A0;奇体的数据线连接D15D8,“体选”信号接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的内容MOV AX,1200H MOV AX,BX MOV AX,1200H MOV AX,BX MOV AX,BX+11H MOV AX,BX+SI MOV AX,BX+SI+11H MOV AX,BP+DI 3.3、指出下列语句的错误。 (1)MOV SI,34H (2)MOV 45H,AX (3)INC 12(4)MOV BX,SI+BP+BUF(5)MOV BL,AX(6)MOV CS,AX(7)OUT 240H,AL(8)MOV SS,2000H(9)LEA BX,AX(10)XCHG AL,78H3.4、已知DS=2000H,(21000H)=2234H,(21002H)=5566H,试区别以下3条指令。MOV SI,1000HLEA SI,1000HLDS SI,1000H3.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的内容是什么?MOV DX,0EFADHMOV AX,1234HMOV CL,4SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL3.10、写出下面的指令序列中各条指令执行后的AX内容。MOV AX,7865HMOV CL,8SAR AX,CLDEC AXMOV CX,8MUL CXNOT ALAND AL,10H3.11、 如果要将AL中的高4位移至低4位,有几种方法?请分别写出实现这些方法的程序段。3.12、利用串操作指令,将AREA1起始的区域1中的200个字节数据传送到以AREA2为起始地址的区域2(两个区域有重叠)。3.13、寄存器BX中有4位0F的十六进制数,编写程序段,将其转换为对应字符(即ASCII码),按从高到低的顺序分别存入L1、L2、L3、L4这4个字节单元中。3.14、 试将BUF起始的100个字节的组合BCD码数字,转换成ASCII码,并存放在以ASC为起始地址的单元中。已知高位BCD码位于较高地址中。3.15、 请给出以下各指令序列执行完后目的寄存器的内容。(1)MOV BX,-78 MOVSX EBX,BX (2)MOV CL,-5 MOVSX EDX,CL (3)MOV AH,9 MOVZX ECX,AH (4)MOV AX,87H MOVZX EBX,AX3.16、 请给出以下各指令序列执行完后EAX和EBX的内容。MOV ECX,12345678HBSF EAX,ECXBSR EBX,ECX3.17、 给以TAB为首地址的100个ASCII码字符添加奇偶校验位(bit7),使每个字节中的“1”的个数为偶数,在顺序输出到10H号端口。3.18、 编写一段程序,要求在长度为100H字节的数组中,找出正数的个数并存入字节单元POSIT中,找出负数的个数并存入字节单元NEGAT中。 习题三 参考答案3.1答:寻址方式是指计算机在执行指令时寻找操作数的方式。8086/8088微处理器有以下几种寻址方式:立即寻址。操作数(仅限源操作数)直接放在指令中。例如:mov cx,100;mov ah,20h。寄存器寻址。操作数在CPU的内部寄存器中。例如:mov es,ax;mov dl,bh。直接寻址。指令中直接给出了操作数的偏移地址。例如:mov ax,3000h;mov buf,100。寄存器间接寻址。操作数的偏移地址放在寄存器bp,bx,si,di四个寄存器中的一个里。例如:mov ax,si;mov bx,cx。寄存器相对寻址。操作数的有效地址为基址寄存器或变址寄存器的内容与指令中指定的位移量之和。例如:mov ax,cntsi;mov strbx,ax。基址变址寻址。操作数的有效地址是一个基址寄存器和一个变址寄存器的和。例如:mov ax,si+bx;mov bx+di,dx。相对基址变址寻址。操作数的有效地址为一个基址寄存器、一个变址寄存器的内容与指令中指定的位移量三者之和。例如:mov ax,cntbxsi;mov cntbxsi,ax。3.2. 答:指令源操作数寻址方式AX的内容MOV AX,1200H立即寻址1200HMOV AX,BX寄存器寻址0BBHMOV AX,1200H直接寻址4C2AHMOV AX,BX寄存器间接寻址231AHMOV AX,BX+11H寄存器相对寻址3F68HMOV AX,BX+SI基址变址寻址8934HMOV AX,BX+SI+11H相对基址变址寻址5B56HMOV AX,BP+DI基址变址寻址6778H3.3 答: (1)MOV SI,34H;目的操作数必须指出是字节操作还是字操作,比如可改成MOV BYTE PTR SI,34H (2)MOV 45H,AX;目的操作数不能是立即数 (3)INC 12;操作数不能是立即数(4)MOV BX,SI+BP+BUF;两个操作数不能同是存储单元(5)MOV BL,AX;操作数不匹配(6)MOV CS,AX;CS不能作为目的操作数(7)OUT 240H,AL;对于IN和OUT指令,端口号大于FFH时,必须先将端口号放入DX寄存器中(8)MOV SS,2000H;段寄存器不能用立即数来赋值,可改成MOV SS,AX(9)LEA BX,AX;源操作数必须是内存,如LEA BX,BUFFER(10)XCHG AL,78H;交换指令不能对立即数操作3.4答:MOV SI,1000H;(SI)2234HLEA SI,1000H;(SI)1000HLDS SI,1000H;(SI)2234H,(DS)5566H3.5答:先进后出。9BBF0H49BBECH9BBECH29BBEEH3.6答:PUSH AXPUSH BXPOP AXPOP BX3.7 答:MOV AX,7FHADD AX,13.8答:ADD AL,12HADC BX,AXSUB AX,BXMOV AX,BX+SIMOV SI,BUF13.9答:DXFAD1H,AX2340H3.10答:AX300H3.11答:循环左移mov cl,4rol al,cl循环右移mov cl,4ror al,cl右移mov cl,4shr al,cl3.12答:从末端开始传送即可解决重叠问题。mov cx,200mov si,offset aera1add si,200mov di,offset aere2add di,200std;DF1,进行地址减量rep movsb3.13答:MOV CL,4 MOV AL,BL ;处理最低位十六进制数 AND AL,0FH CMP AL,0AH JC DIGT4 ADD AL,7DIGT4: ADD,AL,30H MOV L4,AL MOV AL,BL ;处理次低位十六进制数 SHR AL,CL CMP AL,0AH JC DIGT3 ADD AL,7DIGT3: ADD,AL,30H MOV L3,AL MOV AL,BH ;处理次高位十六进制数 AND AL,0FH CMP AL,0AH JC DIGT2 ADD AL,7DIGT2: ADD,AL,30H MOV L2,AL MOV AL,BH ;处理最高位十六进制数 SHR AL,CL CMP AL,0AH JC DIGT1 ADD AL,7DIGT1: ADD,AL,30H MOV L1,AL3.14答:LEA SI,BUF LEA BX,ASC MOV CH,100 MOV CL,4AGAIN: MOV AL,SI ;处理低位BCD码 AND AL,0FH ADD AL,30H MOV BX,AL INC BX MOV AL,SI ;处理高位BCD码 SHR AL,CL ADD AL,30H MOV BX,AL INC BX INC SI DEC CH JNZ AGAIN3.15答:(1)MOV BX,-78;(BX)=FFB2H MOVSX EBX,BX;(EBX)=FFFFFFB2H(2)MOV CL,-5;(CL)=FBH MOVSX EDX,CL;(EDX)=FFFFFFFBH(3)MOV AH,9;(AH)=9H MOVZX ECX,AH(ECX)=00000009H(4)MOV AX,87H;(AX)=87H MOVZX EBX,AX;(EBX)=00000087H3.16答:MOV ECX,12345678H;(ECX)=12345678HBSF EAX,ECX ;(EAX)=00000003HBSR EBX,ECX;(EBX)=0000001CH3.17答:MOV CX,100LEA BX,TABAGN: MOV AL,BXADD AL,0JP NEXTOR AL,80HNEXT: OUT 10H,ALINC BXLOOP AGN3.18 答:假设数组的起始地址是BUFFERLEA BX,BUFFERMOV DX,0MOV CX,100ONCE: MOV AL,BXTEST AL,80H;是正数还是负数JNZ FUSHU;是负数,跳转CMP AL,0;是0吗?JZ NEXTINC DH;是正数,则DH加1JMP NEXTFUSHU: INC DL;是负数,则DL加1NEXT: INC BXDEC CXJNZ ONCEMOV POSIT,DHMOV NEGAT,DL第四章 课后习题4.1、汇编语言有何特点?编写汇编语言源程序时,一般的组成原则是什么?4.2、MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪几种存储模式,各用于创建什么性质的程序?4.3、如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?4.4、逻辑段具有哪些属性?完整代码段定义时的默认属性是什么?小型模式下的简化代码段定义具有的默认属性是什么?4.5、 DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?4.6、给出下列语句中,指令立即数(数值表达式)的值:(1)mov al,23h AND 45h OR 67h (2)mov ax,1234h16+10h (3)mov ax,254h SHL 4 (4)mov al,a AND (NOT(b一 B) (5)mov ax,(76543 LT 32768)XOR 7654h4.7、画图说明下列语句分配的存储空间及初始化的数据值:(1) byte_var db BCD,10,10h,EF,2 dup (一l,?,3 dup(4) (2) word_var dw 1234h,一5,6 dup(?)4.8、设置一个数据段,按照如下要求定义变量:(1)myl_b为字符串变量,表示字符串“Personal Computer!”(2)my2_b为用十六进制数表示的字节变量,这个数的大小为100(3)my3_w为100个未赋值的字变量(4)my4_c为100的符号常量(5)my5_c为字符串常量,代替字符串“Personal Computer!”4.9、假设opw是一个字变量,opbl和opb2是两个字节变量,指出下列语句中的具体错误原因并改正错误。(1) mov byte ptr bx,256(2) mov bx,offset opwsi(3) add opbl,opb2(4) mov opbl,al+l(5) sub al,opw(6) mov di,1234h4.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位无符号数累加的子程序是否正确?若有错,请改正。jiafa PROCpush axxor ax,axxor dx,dxagain: add ax, bxadc dx,0inc bxinc bxloop againretENDP jiafa4.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、编程求1400中所有奇数的和,结果以十六进制数形式显示到屏幕上。4.24、在以DAT为首地址的字节缓冲区中存有100H个无符号字节数据,编程求其最大值与最小值之和,结果存入RESULT字单元。4.25、在内存单元CNT中有一个字数据,编程将其二进制数显示到屏幕上。4.26、在以STRG为首地址的缓冲区中有一组字符串,长度为100,编程实现将其中所有的英文小写字母转换成大写字母,其它的不变。4.27、在以DAT为首地址的内存中有100个无符号数(数的长度为字),编程统计其中奇数的个数,结果以十进制形式显示到屏幕上。要求分别用子程序完成奇数个数统计,用宏完成十进制数显示。4.28、编写一段程序,使汇编程序根据SIGN的值分别产生不同的指令。如果SIGN,则用字节变量DATB中的无符号数除以字节变量SCALE;如果SIGN1,则用字节变量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下不允许使用这种模型,只能在OS2下或其他保护模式的操作系统下使用。MASM 5版本不支持这种模型,但MASM 6可以支持。4.3答:需要使用一个标号,如start。对于有数据段的程序,简化段定义下应该这样开始:start:mov ax,datamov ds,ax汇编语言程序设计过程中,有多种返回DOS的方法,但一般用DOS功能调用的4CH子功能来实现。应用程序的终止代码是:mov ax,4c00hint 21h汇编结束是指汇编程序结束将源程序翻译成目标模块代码的过程。源程序的最后必须有一条end伪指令:end 标号;其中,可选的标号是程序指定的开始执行点,连接程序以此设置CS和IP。如:end start4.4答:逻辑段具有4个属性:(1)定位类型(align_type)说明段的起始地址应有怎样的边界值;(2)组合类型(combine_type)说明程序连接时的段合并方法;(3)使用类型(use_type)只适用于386及其后继机型,它用来指定寻址方式。(4)类别(class)在引号中给出连接时组成段组的类型名。 完整代码段定义时的默认属性是:PARA、PRIVATE、USEl64.5答:COM和EXE程序结构。EXE程序有独立的代码段、数据段和堆栈段,还可以有多个代码段和多个数据段,程序长度可以超过64KB。COM程序只有一个逻辑段,其中包含数据区、代码区和堆栈区,程序代码长度不超过64KB,程序从100H处开始执行。4.6 答:(1)mov al,23h AND 45h OR 67h;67H(2)mov ax,1234h16+10h;133H(3)mov ax,254h SHL 4;2540H(4)mov al,a AND (NOT(b B);21H(5)mov ax,(76543 LT 32768)XOR 7654h;89ABH4.7.答:(1)42H43H44H0AH10H45H46HFFH-04H04H04HFFH-04H04H04H(2)34H12HFBHFFH- 4.8答:(1)myl_b db Personal Computer!(2)my2_b db 64H(3)my3_w dw 100 dup(?)(4)my4_c equ 100(5)my5_c equ 4.9答:(1) mov byte ptr bx,256;改正mov word ptr bx,256(2) mov bx,offset opwsi;改正mov bx,offset opw(3) add opbl,opb2;改正add al,opb2(4) mov opbl,al+l;改正mov opbl,al(5) sub al,opw;改正sub al,opb1(6) mov di,1234h;改正mov word ptr di,1234h4.10答:.MODEL SMALL.DATAX DW 1234HY DW 4321HMAX DW ?.CODESTART: MOV AX,DATAMOV DS,AXMOV AX,XCMP AX,YJNZ NEQUMOV MAX,0FFFFHJMP STOPNEQU: JC NEXTMOV MAX,XJMP STOPNEXT: MOV MAX,YSTOP: MOV AX,4C00HINT 21HEND START4.11答:.MODEL SMALL.DATADAT DW 9234HSIGN DW ?.CODESTART: MOV AX,DATAMOV DS,AXMOV AX,DATCMP AX,0JZ STOPTEST AX,8000HJNZ FUMOV SIGN,0JMP STOPFU: MOV SIGN,0FFHSTOP: MOV AX,4COOHINT 21HEND START4.12答:DISPLAY MACROMOV AH,2INT 21HENDM.MODEL SMALL.DATAX DW 1230HY DW 1234HZ DW 1234H.CODESTART: MOV AX,DATAMOV DS,AXMOV AX,XMOV BX,YCMP AX,ZJNZ N1CMP AX,BXJNZ N2MOV DL,YDISPLAYSTOP: MOV AX,4C00HINT 21HN1: CMP AX,BXJNZ N3N2: MOV DL,XDISPLAYJMP STOPN3: CMP BX,ZJNZ N4JMP N2N4: MOV DL,NDISPLAYJMP STOPEND START4.13答:.MODEL SMALL.DATADAT DB 12H,23H,0F3H,6AH,20H,0FEH,10H,C8H,25H,34HSUM DW ?
收藏