三、选择题
1、在计算机内部,一切信息的存取、处理和传送都是以D形式进行的。 A)EBCDIC码B)ASCII码C)十六进制编码D)二进制编码 2、与十进制数56等值的二进制数是A。 A)111000B)111001C)101111D)110110 四、是非判断题
1、在第三代计算机期间出现了操作系统。(√)
2、对于种类不同的计算机,其机器指令系统都是相同的。(×) 3、在计算机中,数据单位bit的意思是字节。(×) 1.微处理器,微型计算机和微型计算机系统三者之间有何区别?
答:微处理器即CPU,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功
能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包
括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见,微处理器是微型计算机的重
要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。 2.CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能?
答:CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑
运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。 3.累加器和其它通用寄存器相比有何不同?
答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放
数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。 4.微型计算机的总线有哪几类?总线结构的特点是什么?
答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计
生产和维护,更主要的是便于扩充。
6.计算机I/O接口有何用途?试列出8个I/O接口。
答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和
交换。例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、
音响设备接口、其它通用设备接口(USB、SCSI等)。
7.现在,计算机主板上一般都包括哪些I/O接口?I/O接口卡如何与主板相连?
答:现在,计算机主板上一般包括串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接
口等。象显示器适配器、网卡、modem卡等I/O接口卡一般通过总线插槽与主板相连。 8.简述系统总线,AGP总线,PCI总线及ISA总线的作用。
答:系统总线是CPU与存储器及桥接器之间传递信息的通道,AGP总线专门用与连接CPU与显示器适配器,PCI总 线一般用于连接一些高速外设接口作为高速外设与CPU或内存交换信息的通道,而ISA总线一般用于连接一些非高速
专业资料整理
WORD格式
外设接口作为非高速外设与CPU或内存交换信息的通道。 9.试说明计算机用户,计算机软件,计算机硬件三者的相互关系。
答:计算机用户,计算机软件系统,计算机硬件系统共同构成一个计算机应用系统,三者在该系统中处于三个不同的
层次。计算机用户处于最高层,计算机软件处于中间层,计算机硬件系统处于最下层。在这里计算机用户是系统的主
宰,他们通过软件系统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即,计算机用户使用程序设计语言编
制应用程序,在系统软件的干预下使用硬件系统进行工作。
专业资料整理
WORD格式
11.存储单元的选择由什么信号控制?读、写靠什么信号区分?
答:存储单元的选择由地址信号控制,而对存储单元进行读操作还是写操作则要靠读、写信号区分。 4.若用一个字节来表示带符号数,判断下列各运算在机内进行时是否会产生溢出,写出判断过程。 A.5BH+32H;B.-08H-15H;C.-51H+(-3DH);D.2DH+3CH
答:A.产生溢出,5BH=01011011B其补码表示的机器数为:01011011
32H=00110010B其补码表示的机器数为:00110010
相加的结果为:10001101
数值最高位向符号位进位,但符号位向前无进位,故产生溢出。 B.不产生溢出,-08H=-00001000B其补码表示的机器数为:11111000
-15H=-00010101B其补码表示的机器数为:11101011
相加的结果为:111100011
数值最高位向符号位进位,符号位同时也向前进位,故不产生溢出. C.产生溢出,-51H=-01010001B其补码表示的机器数为:10101111
-3DH=-00111101B其补码表示的机器数为:11000011
相加的结果为:101110010
数值最高位向符号位无进位,但符号位向前进位,故产生溢出. D.不产生溢出,2DH=00101101B其补码表示的机器数为:00101101
3CH=00111100B其补码表示的机器数为:00111100
相加的结果为:01101001
数值最高位向符号位无进位,符号位向前也无进位,故不产生溢出。 6.详细叙述总线缓冲器的作用。
答:总线缓冲器的作用主要是控制各路数据在总线上的交叉传送避免相互冲突,当几路数据都要向总线上传送时,就
通过各路的缓冲器来解决,当一路传送时,缓冲器使其它各路数据与总线断开。 7.锁存器和寄存器有什么不同?
答:锁存器与寄存器都是用来暂存数据的器件,在本质上没有区别,不过寄存器的输出端平时不随输入端的变化而变
化,只有在时钟有效时才将输入端的数据送输出端(打入寄存器),而锁存器的输出端平时总随输入端变化而变化,
只有当锁存器信号到达时,才将输出端的状态锁存起来,使其不再随输入端的变化而变化。 1.8086从功能上分成了EU和BIU两部分。这样设计的优点是什么?
答:传统计算机在执行程序时,CPU总是相继地完成取指令和执行指令的动作,即,指令的提取和执行 是串行进行的。而8086CPU在功能上分成了EU和BIU两部分,BIU负责取指令,EU负责指令的执行, 它们之间既互相独立又互相配合,使得8086可以在执行指令的同时进行取指令的操作,即实现了取指 令和执行指令的并行工作,大大提高了CPU和总线的利用率,从而提高了指令的处理速度。 2.8086CPU中地址加法器的重要性体现在哪里?
答:地址加法器是8086CPU的总线接口单元中的一个器件,在8086存储器分段组织方式中它是实现存 储器寻址的一个关键器件,地址加法器将两个16位寄存器中的逻辑地址移位相加,得到一个20位的实 际地址,把存储器寻址空间从64K扩大到1M,极大地扩大了微型计算机的程序存储空间,从而大大提高 了程序运行效率。
专业资料整理
WORD格式
3.8086CPU中有哪些寄存器?分组说明用途。哪些寄存器用来指示存储器单元的偏移地址?
专业资料整理
WORD格式
答:8086CPU中有8个通用寄存器AX、BX、CX、DX、SP、BP、SI、DI;两个控制寄存器IP、FL;四个 段寄存器CS、DS、SS、ES。8个通用寄存器都可以用来暂存参加运算的数据或中间结果,但又有各自的 专门用途。例如,AX专用做累加器,某些指令指定用它存放操作数和运算结果;CX为计数寄存器,在 某些指令中做计数器使用;DX为数据寄存器;BX为基址寄存器,BP为基址指针,SI为源变址寄存器, DI为目的变址寄存器,这4个寄存器在数据寻址中用来存放段内偏移地址(有效地址)或段内偏移地址 的一部分;SP为堆栈指示器,用来存放栈顶有效地址。两个控制寄存器用来存放有关的状态信息和控制 信息。例如,标志寄存器FL用来存放状态标志和控制标志;而指令指针用来存放下一条要取指令的有 效地址。四个段寄存器用来存放段地址。例如,CS寄存器用来存放代码段的段地址;DS寄存器用来存 放数据段的段地址;SS寄存器用来存放堆栈段的段地址;ES寄存器用来存放扩展段的段地址。 4.8086系统中存储器的逻辑地址由哪两部分组成?物理地址由何器件生成?如何生成?每个段的逻辑 地址与寄存器之间有何对应关系?
答:8086系统中存储器的逻辑地址由段地址(段首址)和段内偏移地址(有效地址)两部分组成;存储 单元的物理地址由地址加法器生成,寻址时,CPU首先将段地址和段内偏移地址送入地址加法器,地址 加法器将段地址左移4位并与段内偏移地址相加,得到一个20位的物理地址。数据段的段地址在DS寄 存器中,段内偏移地址可能在BX、BP、SI或DI寄存器中。代码段的段地址在CS寄存器中,段内偏移 地址在IP寄存器中。堆栈段的段地址在SS寄存器中,段内偏移地址在SP寄存器中。扩展段的段地址 在ES寄存器中,段内偏移地址可能在BX、BP、SI或DI寄存器中。
5.设CPU中各有关寄存器的当前状况为:SS=0a8bH、DS=17ceH、CS=dc54H、BX=394bH、IP=2f39H、SP=1200H, BX给出的是某操作数的有效地址,请分别写出该操作数、下一条要取的指令及当前栈顶的逻辑地址和 物理地址。
答:该操作数的逻辑地址为DS:BX=17CE:394BH,物理地址=17CEH*10H+394BH=1B62;BH下一条要取的 指令的逻辑地址为CS:IP=DC54:2F39H,物理地址=DC54H*10H+2F39H=DF47;9当H前栈顶的逻辑地址=SS: SP=0A8B:1200H,物理地址=0A8BH*10H+1200H=0BAB。0H
6.若DS=157DH时,某操作数的物理地址是215FAH,当DS=18DEH时,该操作数的物理地址是多少? 答:该操作数的段内偏移地址=该操作数的物理地址-DS=215FAH-157D0H=BE2AH故,当DS=18DEH时,该 操作数的物理地址=DS*10H+BE2AH=18DE0H+BE2AH=24C0AH
7.设AX=2875H、BX=34DFH、SS=1307H、SP=8H,依此执行PUSHAX、PUSHBX、POPAX、POPCX后栈顶 指针变为多少?AX=?BX=?CX=?
答:当前栈顶指针=SS*10H+SP=13070H+8H=1307,8H依此执行PUSHA、XPUSHBX、POPAX、POPCX后栈 顶指针仍为13078H。但AX=34DF,HBX=34DF,HCX=2875H。
1.假定(BX)=637DH,(SI)=2A9BH,位移量D=3237H,试确定在以下各种寻址方式下的有效地址是 什么? (1)立即寻址 (2)直接寻址
(3)使用BX的寄存器寻址 (4)使用BX的间接寻址 (5)使用BX的寄存器相对寻址 (6)基址变址寻址 (7)相对基址变址寻址
专业资料整理
WORD格式
答:(1)立即数寻址的有效地址是当前IP的内容;
(2)直接寻址,若使用位移量D=3237H进行,则有效地址为3237H; (3)使用BX的寄存器寻址时,操作数在BX寄存器中,因此无有效地址; (4)使用BX的间接寻址时,有效地址在BX寄存器中,即有效地址=637DH; (5)使用BX的寄存器相对寻址的有效地址=(BX)+D=637DH+3237H=95B;4H (6)基址变址寻址的有效地址=(BX)+(SI)=637DH+2A9BH=8E1;8H (7)相对基址变址寻址的有效地址=(BX)+(SI)+D=C050;H
2.写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式: (1)寄存器间接寻址 (2)寄存器相对寻址 (3)基址变址寻址
答:(1)使用寄存器间接寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOVBX,BLOCK ADDBX,12 MOVDX,[BX]
(2)使用寄存器相对寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOVBX,BLOCK MOVDX,[BX+12]
(3)使用基址变址寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOVBX,BLOCK MOVSI,12 MOVDX,[BX+SI]
3.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H, (20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执 行完后AX寄存器的内容。 (1)MOVAX,1200H (2)MOVAX,BX (3)MOVAX,[1200H] (4)MOVAX,[BX] (5)MOVAX,[BX+1100] (6)MOVAX,[BX+SI] (7)MOVAX,[BX+SI+1100]
答:(1)指令MOVAX,1200H执行完后AX寄存器的内容为1200H; (2)指令MOVAX,BX执行完后AX寄存器的内容为0100H;
(3)指令MOVAX,[1200H]是将从物理地址=(DS)*10H+1200H=21200H开始的两个单元内容送AX, 执行完后AX寄存器的内容为4C2AH;
(4)指令MOVAX,[BX]是将从物理地址=(DS)*10H+(BX)=20100H开始的两个单元内容送AX,故 执行完后AX寄存器的内容为3412H;
专业资料整理
WORD格式
(5)指令MOVAX,[BX+1100]是将从物理地址=(DS)*10H+(BX)+1100H=21200H开始的两个单元 内容送AX,故执行完后AX寄存器的内容为4C2AH;
(6)指令MOVAX,[BX+SI]是将从物理地址=(DS)*10H+(BX)+(SI)=20102H开始的两个单元内 容送AX,故执行完后AX寄存器的内容为7856H;
(7)指令MOVAX,[BX+SI+1100]是将从物理地址=(DS)*10H+(BX)+(SI)+1100H=21202H开始 的两个单元内容送AX,故执行完后AX寄存器的内容为65B7H;
4.假设已知(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变 量名VAL的偏移地址值为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?
(1)MOVAX,0ABH(2)MOVAX,BX (3)MOVAX,[100H](4)MOVAX,VAL (5)MOVAX,[BX](6)MOVAX,ES:[BX] (7)MOVAX,[BP](8)MOVAX,[SI] (9)MOVAX,[BX+10](10)MOVAX,VAL[BX] (11)MOVAX,[BX][SI](12)MOVAX,[BP][SI]
答:(1)在指令MOVAX,0ABH中,源操作数字段的寻址方式是立即数寻址,其物理地址值=(CS)*10H+ (IP);
(2)在指令MOVAX,BX中,源操作数字段的寻址方式是寄存器寻址,操作数在BX中,无物理地址; (3)在指令MOVAX,[100H]中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS)*10H+100 =29000H+100H=2910;0
(4)在指令MOVAX,VAL中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS)*10H+50H =29000H+50H=29050;H
(5)在指令MOVAX,[BX]中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS) *10H+(BX)=29000H+100H=29100;H
(6)在指令MOVAX,ES:[BX]中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(ES) *10H+(BX)=21000H+100H=21100;H
(7)在指令MOVAX,[BP]中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(SS) *10H+(BP)=15000H+10H=15010;H
(8)在指令MOVAX,[SI]中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS) *10H+(SI)=29000H+0A0H=290A0;H
(9)在指令MOVAX,[BX+10]中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值=(DS) *10H+(BX)+0AH=29000H+100H+0AH=2910A;H
(10)在指令MOVAX,VAL[BX]中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值=(DS) *10H+(BX)+50H=29000H+100H+50H=29150;H
(11)在指令MOVAX,[BX][SI]中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(DS) *10H+(BX)+(SI)=29000H+100H+0A0H=291A0;H
(12)在指令MOVAX,[BP][SI]中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(SS) *10H+(BP)+(SI)=15000H+10H+0A0H=150B0H
5.分别指出下列指令中的源操作数和目的操作数的寻址方式。
(1)MOVSI,200
专业资料整理
WORD格式
(2)MOVCX,DATA[SI] (3)ADDAX,[BX+DI] (4)ANDAX,BX (5)MOV[SI],AX (6)PUSHF
答:(1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址; (2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址; (3)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是基址变址寻址; (4)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式也是寄存器寻址; (5)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址; (6)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址; 6.试述指令MOVAX,2010H和MOVAX,DS:[2010H]的区别。
答:指令MOVAX,2010H是将立即数2010H送AX寄存器,而指令MOVAX,DS:[2010H]是将DS段有效地 址为2010H的两个单元的内容送AX。 7.写出以下指令中内存操作数的所在地址。 (1)MOVAL,[BX+5] (2)MOV[BP+5],AX (3)INCBYTEPTR[SI+3] (4)MOVDL,ES:[BX+DI] (5)MOVBX,[BX+SI+2]
答:(1)指令MOVAL,[BX+5]中内存操作数的所在地址=(DS)*10H+(BX)+5;
(2)指令MOV[BP+5],AX中内存操作数的所在地址=(SS)*10H+(BP)+5和(SS)*10H+(BP)+6; (3)指令INCBYTEPTR[SI+3]中内存操作数的所在地址=(DS)+(SI)+3;
(4)指令MOVD,LES:[BX+DI]中内存操作数的所在地址=(ES)*10H+(BX)+(DI);
(5)指令MOVBX,[BX+SI+2]中内存操作数的所在地址=(DS)*10H+(BX)+(SI)+2和(DS)*10H+ (BX)+(SI)+3;
8.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原 错误指令((8)、(13)除外)期望实现的操作。 (1)MOVAL,BX(9)MOVES,3278H (2)MOVAL,SL(10)PUSHAL (3)INC[BX](11)POP[BX]
(4)MOV5,AL(12)MOV[1A8H],23DH (5)MOV[BX],[SI](13)PUSHIP (6)MOVBL,F5H(14)MOV[AX],23DH (7)MOVDX,2000H(15)SHLAX,5 (8)POPCS(16)MULAX,BX
答:(1)MOVAL,BX错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOVAX,BX 或MOVAL,BL;
(2)MOVAL,SL错,SI寄存器不能分为高8位和低8位使用,即没有SL寄存器。应改为:MOVAX,SI
专业资料整理
WORD格式
(3)INC[BX]错,未指定操作数的类型。应改为:INCBYTEPTR[BX]
(4)MOV5,AL错,目的操作数使用了立即数,在指令中一般不允许。应改为:MOVDS:[5],AL (5)MOV[BX],[SI]错,源操作数和目的操作数均为内存单元,不允许。 应改为:MOVAX,[SI]
MOV[BX],AX
(6)MOVBL,F5H错,源操作数错,以A~F开头的数字前应加0。应改为:MOVBL,0F5H (7)MOVDX,2000H正确。
(8)POPCS错,不能将栈顶数据弹至CS中。
(9)MOVES,3278H错,立即数不能直接送ES寄存器。
应改为:MOVAX,3278H MOVES,AX
(10)PUSHAL错,栈操作不能按字节进行。应改为:PUSHAX (11)POP[BX]正确。
(12)MOV[1A8H],23DH错,源操作数是立即数,目的操作数必须使用寄存器指出。应改为:
MOVBX,1A8H MOV[BX],23DH
(13)PUSHIP错,不能用IP寄存器做源操作数。
(14)MOV[AX],23DH错,不能用AX寄存器间接寻址。应改为:MOVBX,AX
MOV[BX],23DH
(15)SHLAX,5错,不能用大于己于1的立即数指出移位位数。应改为:
MOVC,L5 SHLAX,CL
(16)MULAX,BX错,目的操作数AX是隐含的,不能在指令中写出。应改为:MULBX 9.设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问: (1)执行指令PUSHAX后(SP)=?
(2)再执行PUSHBX及POPAX后(SP)=?(AX)=?(BX)=? 答:(1)执行指令PUSHAX后(SP)=2000H-2=1FFEH;
(2)再执行PUSHBX及POPAX后(SP)=1FFEH,(AX)=5000H,(BX)=5000H
10.要想完成把[2000H]送[1000H]中,用指令:MOV[1000H],[2000H]是否正确?如果不正确,应用什么 方法?
答:把[2000H]送[1000H]中,用指令MOV[1000H],[2000H]不正确,应改为:MOVAX,[2000H]MOV
[1000H],AX
11.假如想从200中减去AL中的内容,用SUB200,AL是否正确?如果不正确,应用什么方法? 答:想从200中减去AL中的内容,用SUB200,AL不正确,应改为:MOVBL,200SUBBL,AL 12分别写出实现如下功能的程序段
(5)将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来 答:
(5)将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来的程序段是: MOVAL,[BX];数据段中BX为偏移地址的字单元内容送AX
专业资料整理
WORD格式
XCHGAL,[BX+3];数据段中BX+3为偏移地址的字单元内容与AX的内容交换 MOV[BX],AL;数据段中BX+3为偏移地址的字单元内容送BX为偏移地址的字单元 MOVAL,[BX+1];数据段中BX+1为偏移地址的字单元内容送AX
XCHGAL,[BX+2];数据段中BX+2为偏移地址的字单元内容与AX的内容交换
MOV[BX+1],AL;数据段中BX+2为偏移地址的字单元内容送BX+1为偏移地址的字单元
1.假设OP1,OP2是已经用DB定义的变量,W_OP3和W_OP4是已经用DW定义的变量,判断下列指令 书写是否正确?如有错误,指出错在何处?并写出正确的指令(或程序段)实现原错误指令期望实 现的操作((19)、(20)不改)。
(1)PUSHOP1 (2)POP[W_OP4]
(3)MOVAX,WORDPTR[SI][DI] (4)MOVAX,WORDPTRES:BX (5)MOVBYTEPTR[BX],1000 (6)MOVBX,OFFSET[SI+200H] (7)MOVOP2,[BX] (8)CMPHIGHW_OP3,25 (9)CMPOP1,OP2 (10)CMPAX,OP2
(11)MOVW_OP3[BX+4*3][DI],SP (12)ADDW_OP3,W_OP4 (13)MOVAX,W_OP3[DX] (14)MOVOP1,LOWDS (15)MOVSP,OP2[BX][SI] (16)MOVAX,W_OP3+W_OP4 (17)MOVAX,W_OP3-W_OP4+100 (18)SUBAL,W_OP3+7 (19)MOVAX,BXSHL2 (20)MOVBX,W_OP3AND8FD7H
答:1.(1)PUSHOP1错,OP1为字节类型,栈操作不能按字节进行,应改为:PUSHWORDPTROP1 (2)POP[W_OP4]正确。
(3)MOVAX,WORDPTR[SI][DI]错,源操作数寻址方式有问题。 应改为:MOVBX,SI
MOVAX,WORDPTR[BX][DI]
(4)MOVAX,WORDPTRES:BX错,若源操作数为寄存器寻址是不能加段说明及属性修改的。显然,原意应为寄存器间
接寻址,故应改为:MOVAX,WORDPTRES:[BX]
(5)MOVBYTEPTR[BX],1000错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOVWORD
PTR[BX],1000
(6)MOVBX,OFFSET[SI+200H]错,OFFSET运算应在汇编时完成,但[SI+200H]在执行指令时才可获得。应改为:LEA BX,[SI+200H]
专业资料整理
WORD格式
(7)MOVOP2,[BX]错,源操作数和目的操作数均为内存单元,不允许。
应改为:MOVAL,[BX]
MOVOP2,AL
(8)CMPHIGHW_OP3,25错,目的操作数中使用HIGH来分离存储器操作数,这是不允许的。应改为:CMPBYTEPTR
W_OP3+1,25
(9)CMPOP1,OP2错,源操作数和目的操作数均为内存单元,不允许。
应改为:MOVAL,OP2
CMPAL,OP1
(10)CMPAX,OP2错,源操作数为字节类型,目的操作数为字类型,二者不一致。
应改为:CMPAX,WORDPTROP2 (11)MOVW_OP3[BX+4*3][DI],SP正确。
(12)ADDW_OP3,W_OP4错,源操作数和目的操作数均为内存单元,不允许。
应改为:MOVAX,W_OP4
ADDW_OP3,AX
(13)MOVAX,W_OP3[DX]错,不能用DX寄存器间接寻址。
应改为:MOVBX,DXMOVAX, W_OP3[BX]
(14)MOVOP1,LOWDS错,源操作数中使用LOW来分离寄存器操作数,这是不允许的。
应改为:MOVWORDPTROP1,DS
(15)MOVSP,OP2[BX][SI]错,源操作数为字节类型,目的操作数为字类型,二者不一致。应改为:MOVSP,WORDPTR
OP2[BX][SI]
(16)MOVAX,W_OP3+W_OP4错,两个标识符相加无意义。应改为:MOVAX,W_OP1
ADDAX,W_OP2
(17)MOVAX,W_OP3-W_OP4+100正确,源操作数为两个标识符(地址)相减再加一数,汇编时得到一个数。 (18)SUBAL,W_OP3+7错,两个操作数类型不一致。应改为:SUBAL,BYTEPTRW_OP3+7 (19)MOVAX,BXSHL2错,SHL只能对常量进行运算,左边不能使用寄存器 (20)MOVBX,W_OP3AND8FD7H错,AND只能对常量进行运算,左边不能使用变量
4.设已定义数据段 DATASEGMENT
,,
VAR2DW10H,7889H
,, VAR5DB20H,0 ADRRDWVAR2,VAR5 DATAENDS
为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”, 上述省略号位置应分别填写一条什么语句?说明理由。
答:为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”,
上述省略号位置应分别填写ORG10H和ORG20H,或者分别填写语句
专业资料整理
WORD格式
VAR1DB10HDUP(?)和VAR36DUP(?)
5.下面的数据段中,有数据为‘4100H’的字存储单元有几个?它们的偏移量分别是多少?
DATASEGMENT DA1DB0 ORG41H
DA2DB0,‘A’,41H,0,41H ADRDWDA1,DA2 DATAENDS
答:给出的数据段中,有数据‘4100H’的字存储单元有3个,它们的偏移量分别是41H、44H、 47H。
7.试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储 情况。
VAR1DB‘abcdefghij’
VAR2DW6162,H6364H,6566H,6768H,696AH
答:将第一个伪指令语句改写为VAR1DW‘ab’,‘cd’,‘ef’,‘gh’,‘ij’,第二个伪指 令语句不变。或第一个伪指令语句不变,而将第二个伪指令语句改写为:
VAR2DB61H,62H,63H,64H,65H,66H,67H,68H,69H,6AH 9.按下面的要求写出程序的框架
(1)数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字 节;
(2)堆栈段从小段开始,段组名(类别名)为STACK;
(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值; (4)程序结束。 答:所求程序框架为: DataSEGMENTAT0E000H
Arr_wLABELWORD Arr_bDB100DUP(?) DataENDS
Sta_segSEGMENTPARA‘STACK’
DB80DUP(?) TopLABELWORD Sta_segENDS CodeSEGMENT
ASSUMECS:Code,DS:data,SS:sta_seg ORG1000H Start:MOVAX,data
MOVDS,AX
MOVAX,Sta_seg MOVSS,AX
专业资料整理
WORD格式
MOVSP,OFFSETTop
,, MOVAH,4CH INT21H CodeENDS
ENDStart
10.编写一个程序,要求运行时屏幕显示‘BELL’,同时响铃一次(响铃的ASCII码为07)。 答:所求程序为: CodeSEGMENT
ASSUMECS:code Start:MOVDL,42H
MOVAH,2 INT21H
MOVDL,45H MOVAH,2 INT21H MOVDL,4CH MOVAH,2 INT21H MOVDL,4CH MOVAH,2 INT21H MOVDL,7 MOVAH,2 INT21H MOVAH,4CH INT21H CodeENDS ENDStart
11.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X、一完整的程序计算X+Y+Z,并将结果送X。 答:所求程序为:
X_SEGSEGMENT XDW12eH X_SEGENDS Y_SEGSEGMENT YDW4d2H Y_SEGENDS
Z_SEGSEGMENTSTAC‘KSTACK’
专业资料整理
Y和Z,试编制 WORD格式
ZDW2CAH Z_SEGENDS CodeSEGMENT
ASSUMECS:Code,DS:X_SEG,ES:Y_SEG,SS:Z_SEG Start:MOVAX,X_SEG
MOVDS,AX
MOVAX,Y_SEG MOVES,AX MOVAX,ES:Y ADDX,AX MOVBP,0 MOVAX,[BP+Z] ADDX,AX MOVAH,4CH INT21H
CodeENDS ENDStart
12.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的DADD1和附加段E_SEG中 的DADD2相加,并把结果存放在D_SEG段中的SUM中。其中DADD、1DADD2和SUM均为双字类型, DADD1赋值为98765,DADD2赋值为-15893。 答:所求程序为:
D_SEGSEGMENT DADD1DD98765 SUMDD? D_SEGENDS E_SEGSEGMENT DADD2DD-15893 E_SEGENDS C_SEGSEGMENT
ASSUMECS:C_SEG,DS:D_SEG,ES:E_SEG Start:MOVAX,D_SEG
MOVDS,AX MOVAX,E_SEG MOVES,AX
MOVAX,WORDPTRDADD1 MOVBX,WORDPTRDADD1+2 ADDAX,WORDPTRES:DADD2 ADCBX,WORDPTRES:DADD2+2 MOVWORDPTRSUM,AX
专业资料整理
WORD格式
MOVWORDPTRSUM+2,BX MOVAH,4CH INT21H C_SEGENDS ENDStart
======================================================= 一、填空题
1、执行部件EU的组织有:4个通用寄存器,4个专用寄存器和1个标志寄存器和算术 逻辑部件。
2、8086CPU从偶地址访问内存1个字时需占用1个总线周期,而从奇地址访问内存1个字操作需占用2 个总线周期。
3、IBM-PC机中的内存是按段存放信息的,一个段最大存贮空间为64K字节。 4、8086微处理机在最小模式下,用M/IO来控制输出地址是访问内存还是访问I/O。 5、一台计算机能执行多少种指令,是在设计时确定的。 二、单项选择题
1、微型计算机的性能主要由B来决定。 A、价钱B、CPUC、控制器D、其它
2、对微处理器而言,它的每条指令都有一定的时序,其时序关系是C A、一个时钟周期包括几个机器周期,一个机器周期包括几个指令周期。 B、一个机器周期包括几个指令周期,一个指令周期包括几个时钟周期。 C、一个指令周期包括几个机器周期,一个机器周期包括几个时钟周期。 D、一个指令周期包括几个时钟周期,一个时钟周期包括几个机器周期。 3、属于数据寄存器组的寄存器是C
A、AX,BX,CX,DSB、SP,DX,BP,IPC、AX,BX,CX,DXD、AL,DI,SI,AH 4、微型计算机的ALU部件是包含在D之中。 A、存贮器B、I/O接口C、I/O设备D、CPU
5、在8086和8088汇编语言中,一个字能表示的有符号数的范B是围
A、-32768≤n≤32768B、-32768≤n≤32767C、-65535≤n≤65535D、-65536≤N≤65535 6、80386微型计算机是32位机,根据是它的D。
A、地址线是32位B、数据线为32位C、寄存器是32位的D、地址线和数据线都是32位
7内、某数存于内存数据段中,已知该数据段的段地址为
2000H,而数据所在单元的偏移地址为0120H,该数的在
存的物理地址为(B)
A.02120HB.20120HC.21200HD.03200H
8、在存贮器读周期时,根据程序计数器PC提供的有效地址,使用从内存中取出(D) A.操作数B.操作数地址C.转移地址D.操作码 9、专业资料整理
8
WORD格式
A.W/IO=1,WR=0B.WR=1C.M/IO=0,RD=0D.RD=0
10、在8086/8088微机系统中,将AL内容送到I/O接口中,使用的指令是(D) A.INAL,端口地址B.MOVAL,端口地址C.OUTAL,端口地址D.OUT端口地址,AL 三、简答题
1.微处理器内部结构由哪些部件组成?
2.论述8086CPU的最小方式和最大方式的区别。 3.论述指令周期、机器周期和时钟周期间的关系。
4.8086CPU从功能上分为几部分?各部分由什么组成?各部分的功能是什么?
5.8086系统中的物理地址是如何得到的?假如CS=2500H,IP=2l00H,其物理地址是多少? 6.什么是最大模式?什么是最小模式?用什么方法将8086/8088置为最大模式和最小模式? 7.存储器分段组织有何优越性? 8.试述BHE与A0组合如何选择数据字?
9.CPU响应中断时,为什么要执行两个连续的中断响应周期?
答案: 一、填空题
1、4个通用寄存器、4个专用寄存器、1个标志寄存器和算术逻辑部件 2、1个总线、2个总线 3、64K 4、M/IO 5、设计 二、单项选择题
1、B2、C3、C4、D5、B6、D7、B8、D9、A10、D 三、简答题
1、答案:微处理器由两部分组成,总线接口单元和执行单元
2、8086CPU的最小方式和最大方式的区别是:最小方式,MN/MX接+5V(MX为低电平),用于构成小型单处理机系统,
支持系统工作的器件:(1)时钟发生器,8284A,(2)总线锁存器,74LS373,(3)总线收发器,74LS245,控制信号由CPU
提供。最大方式,MN/MX接地(MX为低电平),用于构成多处理机和协处理机系统,支持系统工作的器件:(1)时钟发生
器,8284A,(2)总线锁存器,74LS373,(3)总线收发器,74LS245,(4)总线控制芯片,8288,控制信号由8288提供。
3、答:(1).执行一条指令所需要的时间称为指令周期;(2).一个CPU同外部设备和内存储器之间进行信息交换过
程所需要的时间称为总线周期;(3).时钟脉冲的重复周期称为时钟周期;(4).一个指令周期由若干个总线周期组成,
一个总线周期又由若干个时钟周期组成;(5).8086CPU的总线周期至少由4个时钟周期组成;(6).总线周期完成
一次数据传输包括:传送地址,传送数据;(7)等待周期----在等待周期期间,总线上的状态一直保持不变;(8)
空闲周期----总线上无数据传输操作
专业资料整理
WORD格式
4、8086从功能上可分为执行单元和总线接口单元。执行单元的功能是负责指令的执行,将指令译码并利用内部寄存
器和ALU对数据进行处理。它由4个通用寄存器(AX、BX、CX、DX),4个专用寄存器(BP、SP、SI和DI),标
志寄存器和算术逻辑部件组成。总线接口单元的功能是存储器、I/O端口传送数据。它由4个段寄存器(CS、DS、 ES、SS),指令指针寄存器IP,20位地址加法器和6个字节的指令队列组成。
5、在8086系统中,用16位的段地址和16位的偏移地址来表示20位的物理地址,物理地址=段地址*16+偏移址得到
专业资料整理
WORD格式
物理地址。
该题CS=2500H,IP=2l00H,则物理地址=CS*16+IP=2500H*16+2100H=27100H
6、最大模式是相对最小模式而言,系统中包含两个或多个处理品,其中一个主处理器就是8088/8086,其它处理
器是协处理器,它是协助主处理器工作的。将MN/MX*置0即为最大模式。
最小模式又是相对于最大模式,就是在系统中只有一个处理器,所有的总线控制信号都有由8088/8086产生,系
统中总线控制逻辑电路少,将MN/MX*置1即为最大模式。
7、减少了指令的长度,提高了执行速度。内存分段为程序浮动加载创造了条件。使程序保持完整的相对性,具备 了浮动性。
8、BHE的作用是高8位数据允许,A0=0是低8位数据允许,在T1状态时,BHE和A0组合起来表示连接在数 据总线上的存储器和I/O端口当前的数据在总线上出现有格式。
9、CPU响应中断时,执行两个连续的中断响应周期,每个响应周期都给出中断响应信号INTA。这是因为第一 个总线周期通知中断请示设备,微处理器准备响应中断,应该准备好中断类型码,第二个总线周期中,微处理器接收
中断类型码,以便得到中断向量,即中断服务程序的入口地址。
2.根据下列要求编写一个汇编语言程序:: (1)代码段的段名为COD_SG (2)数据段的段名为DAT_SG (3)堆栈段的段名为STK_SG
(4)变量HIGH_DAT所包含的数据为95 (5)将变量HIGH_DAT装入寄存器AH,BH和DL (6)程序运行的入口地址为START 2、答案: DAT_SGSEGEMNT
HIGH_DATDB95 DAT_SGENDS ;
STK_SGSEGMENT
DW64DUP(?) STK_SGENDS ;
COD_SGSEGMENT MAINPROCFAR
ASSUMECS:COD_SG,DS:DAT_SG,SS:STK_SG START:MOVAX,DAT-SG
MOVDS,AX MOVAH,HIGH_DAT MOVBH,AH MOVDL,AH
专业资料整理
WORD格式
MOVAH,4CH INT21H
专业资料整理
WORD格式
MAINENDP COD_SGENDS
ENDSTART
3、定义一个数据段的字符变量和数据变量。
(1)TRING为字符串变量:‘Personalcomputer’ (2)VALD为十进制数字节变量12,99 (3)VALH为十六进制数字变量32H,0FAH (4)VALZ为10个零的字节变量 (5)VALW为20个字单元
3、答案: DATASEGMENT
TRINGDB‘Personalcomputer’ VALDDB12,99 VALHDB32H,0FAH VALZDB10DUP(‘0’) VALWDW20DUP(?)
5、下列标号为什么是非法的?
(1)GET.DATA(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM
答:非法标号:(1)因为‘.’只允许是标号的第一个字符
(2)第一个字符不能为数字 (3)不允许出现‘-’ (4)不能是保留字,如助记符 (5)不能有空格
6、下面的数据项设置了多少个字节? (1)ASC_DATADB‘1234’(2)HEX_DATADB1234H 答案:(1)设置了4个字节(2)设置了2个字节
7、DATASEGMENT
TABLE_ADDRDW1234H DATAENDS . . .
MOVBX,TABLE_ADDR LEABX,TABLE_ADDR
请写出上述两条指令执行后,BX寄存器中的内容。
答案:MOVBX,TABLE_ADDR;执行后(BX)=1234H
LEABX,TABLE_ADDR;执行后(BX)=OFFSETTABLE_ADDR
专业资料整理
WORD格式
8、写出分配给下列中断类型号在中断向量表中的物理地址。 (1)INT12H(2)INT8 答案:(1)00048h(2)00020h
9、AR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。
(1)ADDVAR1,VAR2(2)SUBAL,VAR1 (3)JMPLAB[SI](4)JNZVAR1
9、答案:
(1)源和目的不能同为内存变量 (2)两个类型不匹配 (3)LAB为标号不为符号常量
(4)JNZ可跳转到标号,不能跳转到变量。 二、填空题
1、假设(DS)=2000H,(BX)=1256H,(SI)=528FH;位移量TABLE=20A1H,(232F7H)=3280H,(264E5H) =2450H,则
执行指令JMPBX后,(IP)=; 执行指令JMPTABLE[BX]后,(IP)=; 执行指令JMP[BX][SI]后,(IP)=。
2、在1000H单元中有一条二字节指令JMPSHORTLAB,如果其中偏移量分别为30H、6CH、0B8H,则转向 地址LAB的值分别为;;;
3、数据段中有以下定义: ARRAY1EQU16H ARRAY2DW16H
请指出下面两条指令的寻址方式: MOVAX,ARRAY1;寻址方式。 MOVAX,ARRAY2;寻址方式。 4、下面两个语句的区别在于、。 X1EQU1000H X2=1000H
5、指令“ANDAX,STR1ANDSTR2”中,STR1和STR2是两个已赋值的变量,两个AND的区别 是、。
6、指令LOOPZ/LOOPE是结果或发生转移的指令。而指令LOOPNZ/LOOPNE则是结果或 发生转移的指令。
7、调用指令CALL可分为、、和等四种调用。
8、在汇编语言中,一个过程有NEAR和FAR两种属性。NEAR属性表明主程序和子程序,FAR属性表 示主程序和子程序。
9、串处理指令规定源寄存器使用,源串在段中;目的寄存器使用,目的串必须在 段中。
10、是过程定义结束伪指令,与配套使用。是段定义结束伪指令,与配套使 用。
专业资料整理
WORD格式
答案:填空题
1、1256H、3280H、2450H 2、1030H,106CH,10B8H
3、立即数寻址方式、直接寻址方式
4、=可以二次赋值,EQU不能直接下次赋值,如果要二次赋值,必须使用PURGE解除后才行。 5、前一个AND是一个命令,后一个AND是一个运算符。 6、相等、零,不相等,不为零
7、段内直接,段内间接,段间直接,段间间接 8、在同一个段内,不在同一个段内。 9、SI,DS,DI,ES
10、ENDP,必须与过程名,ENDS,必须与段名
三、选择题
1、执行下列程序,选择正确的结果: MOVSP,2000H MOVAX,0F0H MOVSI,1234H MOVDX,5678H PUSHSI POPDI SHLDX,1 TESTAX,DX PUSHDX HLT (1)SP=; A)2000HB)1FFFH C)2001HD)1FFEH
(2)DH内容所在存储器的偏移地址为; A)1FFFHB)1FFEH C)1FFDHD)1FFCH
(3)DL内容所在存储器的偏移地址为; A)1FFFHB)1FFEH C)2000HD)1FFCH (4)(AX)=; A)0HB)78H C)0F0HD)56H (5)(DI)=。 A)1234HB)5678H C)2000HD)00F0H
专业资料整理
WORD格式
(6)(DX)=; A)5678HB)0ACF0H C)2B3CHD)0ABF0H (7)标志位ZF=。 A)0B)1C)不定D)无值
2、下面是多字节加法程序,第一个数和是8A0BH,第二个数是D705H。 DATASEGMENT
FIRSTDB(1),(2),0H SECONDDB(3),(4) DATAENDS CODESEGMENT
ASSUMECS:CODE,DS:START:MOVAX,DATA
MOVDS,AX MOVCX,(5) MOVSI,0 (6)
NEXT:MOVAL,SECOND[SI]
ADCFIRST[SI],AL INCSI LOOPNEXT MOVAL,0 ADCAL,(7) MOVFIRST[SI],AL MOVAH,4CH INT21H
CODEENDS
ENDSTART
请选择正确的答案填入空格中:(1)A)8AHB)0BH
C)D7HD)05H (2)A)8AHB)0BH
C)D7HD)05H (3)A)8AHB)0BH
C)D7HD)05H (4)A)8AHB)0BH
C)D7HD)05H (5)A)3B)2
C)1D)4
DATA
专业资料整理
WORD格式
(6)A)CLCB)CLD
C)STCD)CLI (7)A)1B)-1
C)0D)0FFH
答案:选择题
1、(1)、D(2)、A(3)、B(4)、C(5)、A(6)、B(7)、A 2、(1)、B(2)、A(3)、D(4)、C(5)、B(6)、A(7)、C
四、完成下列练习
1、设(DS)=0300H,(CS)=0200H,(IP)=0100H,(BX)=1000H,DISPLACE=2000H,(4000H)(6000H)=8000H
确定无条件转换指令的段内转移地址
(1)JMPBX (2)JMP[BX]
(3)JMPDISPLACE[BX]
答:1000H,5000H,8000H
2、设AX和BX寄存器中是有符号数,CX和DX寄存器中是无符号数,写出下列条件转移指令。
(1)CX值高于或等于DX值,则转移HIEQU (2)AX值大于BX值,则转移GREAT (3)CX值为0,则转移ZERO
(4)AX值小于或等于BX值,则转移SMAEQU (5)CX值低于或等于DX值,则转移LOWEQU (6)AX为负值,则转移NEGAT (7)AX为偶数,则转移IMAGE
2、答案: (1)CMPCX,DX
JNBHIEQU : : HIEQU:
(2)CMPAX,BX
JGGREAT : : GREA:T
(3)CMPCX,0
JZZERO : :
专业资料整理
=5000H, WORD格式
ZERO:
(4)CMPAX,BX
JLESMAEQU : : SMAEQU:
(5)CMPCX,DX
JBELOWEQU : : LOWEQU:
(6)CMPAX,0
JSNEGAT : : NEGAT:
(7)TESTAX,AX
JPIMAGE : : IMAGE:
3、写出下列串操作指令所替代的指令序列。
(1)REPMOVSB (2)REPLODSB (3)REPSTOSB (4)REPSCASB
3、答案:
(1)MOVDS,SEGSOURCE MOVES,SEGTDEST MOVSI,OFFSETSOURCE MOVDI,OFFESTDEST MOVCX,N
AGAIN:MOVAL,[SI]
MOVES:[DI],AL INCSI INCDI LOOPAGAIN (2)MOVDS,SEGSOURCE
专业资料整理
WORD格式
MOVSI,OFFSETSOURCE MOVCX,N
AGAIN:MOVAL,[SI]
INCSI LOOPAGAIN
(3)MOVES,SEGTDEST
MOVDI,OFFESTDEST MOVCX,N
AGAIN:MOVES:[DI],AL
INCDI LOOPAGAIN
(4)MOVES,SEGTDEST
MOVDI,OFFESTDEST MOVCX,N
AGAIN:CMPAL,ES:[DI]
INCDI
LOOPAGAIN 五、是非判断题
程序在数据段中的定义如下: DATASEGMENT NAMESDB‘ABCD’ NAMETDW20 DATAENDS
请判断下列指令是否正确?正确的填‘A’,错误的填‘B’。
(1)MOVBX,OFFSETNAMES() (2)MOVAL,[BX+2]() (3)MOVAX,NAMES()
(4)MOVAX,WORDPTRNAMES+1() (5)MOVAL,NAMET() (6)MOVAL,BYTEPTRNAMET() (7)MOVAX,DATA() (8)MOVDS,AX() (9)MOVAX,SEGNAMES() (10)MOVBX,DATA() 答案:五、是非判断题
(1)A(2)B(3)B(4)A(5)B(6)A(7)A(8)A(9)六、请阅读下列程序,分析其功能或结果 1、MOVAH,00
INT16H
专业资料整理
A(10)A WORD格式
MOVAH,0AH MOVCX,00 MOVBH,00 INT10H 2、MOVAH,00
MOVAL,66 MOVDX,00 INT17H MOVAH,00 MOVAL,0DH INT17H 3、MOVAH,07
MOVAL,00 MOVBL,70H MOVCH,02 MOVCL,05 MOVDH,22 MOVDL,38 INT10H
4、MESSDB‘PRESSANYKEY’,0DH,0AH,‘$’
MOVAH,09 MOVDX,SEGMESS MOVDS,DX MOVDX,OFFSETMESS INT21H
5、MOVAH,2 MOVDL,1 INT21H
答案:六、请阅读下列程序,分析其功能或结果
1、读取键盘输入,并显示在显示器上。 2、在打印机一输出字符‘B’,并回车。
3、屏幕初始化,左上角行号为2,左上角列号为5,右下角行号为22,右下角列号为38,使用整个空白窗口。
4、在屏幕上输出PRESSANYKEY并换行回车。 5、在屏幕上输出1
七、编写程序
1.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
2.编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若不同则
专业资料整理
WORD格式
显示“NOMATCH”。
专业资料整理
WORD格式
3.试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息:
(1)如果3个数都不相等则显示0; (2)如果3个数中有2个数相等则显示2; (3)如果3个数都相等则显示3。
4.已知整数变量A和B,试编写完成下述操作的程序:
(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中; (2)若两个数均为奇数,则两数分别加1,并存回原变量; (3)若两个数均为偶数,则两变量不变。
5.把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。另一个数组 RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次。试编写程序,根据GRAD中的学生 成绩,将排列的名次填入RANK数组中(提示:一个学生的名次等于成绩高于这个学生的人数加1)。
6.试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一
个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束。两个状态寄存器的端口地址分别是0024和0036,
与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。
7.编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT 指令变换)存入内存缓冲区BUFFER。加密表为; 输入数字:0,1,2,3,4,5,6,7,8,9 密码数字:7,5,9,1,3,6,8,0,2,4 七、编写程序
1、答案: abc:movah,1 int21h cmpal,’a’ jbstop cmpal,’z’ jastop subal,20h movdl,al movah,2 int21h jmpabc stop:ret 2、答案: datareasegment
string1db‘asfioa’ string2db‘xcviyoaf’ mess1db‘MATCH’,’$’ mess2db‘NOMATCH’$,’’
专业资料整理
WORD格式
datareaends
专业资料整理
WORD格式
prognamsegment mainprocfar
assumecs:prognam,ds:datarea start: pushds subax,ax pushax movax,datarea movds,ax moves,ax begin:
movcx,string2-string1 movbx,mess1-string2 cmpbx,cx jnzdispno leadx,addr leasi,string1 leadi,string2 repecmpsb jnedispno
movah,9 leadx,mess1 int21h
ret dispno:
movah,9 leadx,mess2 int21h ret mainendp prognamends
endstart
3、答案: datasegment arraydw3dup(?) dataends codesegment mainprocfar
assumecs:code,ds:data
专业资料整理
WORD格式
start: pushds subax,ax pushax movax,data movds,ax movcx,3 leasi,array begin:
pushcx movcl,4 movdi,4 movdl,‘‘ movah,02 int21h movdx,0 input:
movah,01 int21h andal,0fh shldx,cl ordl,al decdi jneinput mov[si],dx addsi,2 popcx loopbegin comp:
leasi,array movdl,0 movax,[si] movbx,[si+2] cmpax,bx jnenext1 adddl,2 next1:
cmp[si+4],ax jnenext2
专业资料整理
WORD格式
adddx,2 next2:
cmp[si+4],bx jnenum adddl,2 num:
cmpdx,3 jldisp movdl,3 disp:
movah,2 adddl,30h int21h ret mainendp codeends
endstart
4、答案: dsegsegment
adw? bdw? dsegends csegsegment mainprocfar
assumecs:cseg,ds:dseg start:pushds
subax,ax pushax movax,dseg movds,ax
begin:movax,a
movbx,b xorax,bx testax,0001 jzclass testbx,0001 jzexit xchgbx,a movb,bx
专业资料整理
WORD格式
jmpexit
class:testbx,0001
jzexit incb inca
exit:ret mainendp csegends
endstart
5、答案: dsegsegment gradedw30dup(?) rankdw30dup(?) dsegends csegsegment mainprocfar
assumecs:cseg,ds:dseg,es:dseg start:pushds
subax,ax pushax movax,dseg movds,ax moves,ax
begin:movdi,0
movcx,30
loop1:pushcx
movcx,30 movsi,0 movax,grade[di] movdx,0
loop2:cmpgrade[si],ax
jbego_on incdx
go_on:addsi,2
looploop2 popcx incdx
movrank[di],dx sdddi,2
专业资料整理
WORD格式
looploop1 ret
mainendp csegends
endstart
6、答案:
movsi,0 movdi,0
test12:inal,0024h
testal,08 jnzexit inal,0036h testal,08 jnzexit
dev1:inal,0024h
testal,01 jzdev2 inal,0026h movbuffer[si],al incsi
dev2:inal,0036h testal,01 jztest12 inal,0038h movbuff2[di],al incdi jmptest12 exit:ret 7、答案:
scodedb7,5,9,1,3,6,8,0,2,4 bufferdb10dup(?) ;⋯⋯
movsi,0 movcx,10 leabx,scode
input:movah,01
int21h cmpal,0ah jzexit
专业资料整理
WORD格式
andal,0fh xlat
movbuffer[si],al incsi loopinput
exit:ret
专业资料整理
因篇幅问题不能全部显示,请点此查看更多更全内容