微机原理与接口技术试题集_第1页
微机原理与接口技术试题集_第2页
微机原理与接口技术试题集_第3页
微机原理与接口技术试题集_第4页
微机原理与接口技术试题集_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.第一章微型计算机根底习题一1.简述微型计算机系统的组成。

2.简述计算机软件的分类及操作系统的作用。

3.将以下十进制数转换成二进制数:

(1)49;〔2〕73.8125;(3)79.75

45.将十六进制数变换成二进制数和十进制数:

〔1〕FAH;〔2〕5BH;〔3〕78A1H;〔4〕FFFFH;(5)34.2AH;〔6〕B8.93H

6.将以下十进制数转换成十六进制数:

〔1〕39;〔2〕299.34375;〔3〕54.5625

7.将以下二进制数转换成十进制数:

〔1〕10110.101B;〔2〕10010010.001B;〔3〕11010.1101B

8.计算〔按原进制运算〕:

〔1〕10001101B+11010B;〔2〕10111B+11100101B;〔3〕1011110B-1110B;

〔4〕124AH+78FH;〔5〕5673H+123H;〔6〕1000H-F5CH;

9.a=1011B,b=11001B,c=100110B,按二进制完成以下运算,并用十进制运算检查计算结果:

〔1〕a+b;〔2〕c-a-b;〔3〕a·b;〔4〕c/b10.a=00111000B,b=11000111B,计算以下逻辑运算:

〔1〕aANDb;〔2〕aORb;〔3〕a*ORb;〔4〕NOTa11.设机器字长为8位,写出以下各数的原码和补码:

〔1〕+1010101B;〔2〕-1010101B;〔3〕+1111111B;

〔4〕-1111111B;〔5〕+1000000B;〔6〕-1000000B

12.写出以下十进制数的二进制补码表示〔设机器字长为8位〕:

〔1〕15;〔2〕-1;〔3〕117;〔4〕0;

〔4〕-15;〔5〕127;〔6〕-128;〔7〕80

13.设机器字长为8位,先将以下各数表示成二进制补码,然后按补码进展运算,并用十进制数运算进展检验:

〔1〕87-73;〔2〕87+〔-73〕;〔3〕87-〔-73〕;

〔4〕〔-87〕+73;〔5〕〔-87〕-73;〔6〕〔-87〕-〔-73〕;

14.a,b,c,d为二进制补码:a=00110010B,b=01001010B,c=11101001B,d=10111010B,计算:

〔1〕a+b;〔2〕a+c;〔3〕c+b;〔4〕c+d;

〔5〕a-b;〔6〕c-a;〔7〕d-c;〔8〕a+d-c

15.设以下四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出:

〔1〕a=37H,b=57H;〔2〕a=0B7H,b=0D7H;

〔3〕a=0F7H,b=0D7H;〔4〕a=37H,b=0C7H

16.求以下组合BCD数的二进制和十六进制表示形式:

〔1〕3251〔2〕12907〔3〕ABCD〔4〕abcd

17.将以下算式中的十进制数表示成组合BCD码进展运算,并用加6/减6修正其结果:

〔1〕38+42;〔2〕56+77;〔3〕99+88;〔4〕34+69;

〔5〕38-42;〔6〕77-56;〔7〕15-76;〔8〕89-23

18.将以下字符串表示成相应的ASCII码〔用十六进制数表示〕:

〔1〕E*ample1;〔2〕JinanUniversity;〔3〕-108.652;

〔4〕Howareyou";〔5〕puter〔6〕InternetWeb

19.将以下字符串表示成相应的ASCII码〔用十六进制数表示〕:

〔1〕Hello〔2〕123<CR>456;〔注:<CR>表示回车〕〔3〕ASCII;

〔4〕Thenumberis2315习题二一、选择题1.80486CPU进展算术和逻辑运算时,可处理的信息的长度为()。A、32位B、16位C、8位D、都可以2.在下面关于微处理器的表达中,错误的选项是()。A、微处理器是用超大规模集成电路制成的具有运算和控制功能的芯片B、一台计算机的CPU含有1个或多个微处理器C、存放器由具有特殊用途的局部内存单元组成,是内存的一局部D、不同型号的CPU可能具有不同的机器指令3.假设用MB作为PC机主存容量的计量单位,1MB等于()字节。A、210个字节B、220个字节C、230个字节D、240个字节4.运算器在执行两个用补码表示的整数加法时,判断其是否溢出的规则为()。A、两个整数相加,假设最高位〔符号位〕有进位,则一定发生溢出B、两个整数相加,假设结果的符号位为0,则一定发生溢出C、两个整数相加,假设结果的符号位为1,则一定发生溢出D、两个同号的整数相加,假设结果的符号位与加数的符号位相反,则一定发生溢出5.运算器的主要功能是()。A、算术运算B、逻辑运算C、算术运算与逻辑运算D、函数运算6.运算器由很多部件组成,其核心局部是()。A、数据总线B、算术逻辑单元C、累加器D、多路开关7.在一般的微处理器中,()包含在CPU中。A、内存B、输入/输出单元C、磁盘驱动器D、算术逻辑单元8.80486CPU的标志存放器中,OF标志表示运算结果的()情况。A、进/借位B、符号C、溢出D、辅助进位9.假设*数据段位于存储区38000H~47FFFH,则该数据段的段基址为〔〕。A、38000HB、47FFFHC、3000HD、3800H10.程序设计中所使用的地址是〔〕。A、逻辑地址B、有效地址C、物理地址D、段基址11.80*86执行程序时,对存储器进展时,物理地址可由〔〕组合产生。A、SS和IPB、CS和IPC、DS和IPD、CS和BP12.*处理器与内存进展数据交换的外部数据总线为32位,它属于〔〕。A、8位处理器B、16位处理器C、32位处理器D、64位处理器13.在堆栈操作中,隐含使用的通用存放器是〔〕。A、A*B、B*C、SID、SP14.主要决定微机性能的是〔〕A、CPUB、耗电量C、质量D、价格15.十进制负数–38的八位二进制补码是〔〕A、01011011BB、11011010BC、11011011BD、01011010B16.假设*台微型计算机的型号是奔四800,则其中800的含义是〔〕A、CPU中有800个存放器B、CPU中有800个运算器C、该微机的内存为800MBD、时钟频率为800MHZ17.在计算机内部,一切信息的存取,处理和传送都是以〔〕形式进展。A、EBCDIC码B、ASCII码C、十六进制编码D、二进制编码18.16位PC机中整数的有效范围是〔〕A、-32768―32767B、-32767―32767C、0―65535D、-32768―32767或0―6553519.在〔〕表示中,二进制数11111111B表示十进制数–1A、原码B、反码C、补码D、BCD码20.用8位的二进制数的补码形式表示一个带符号数,它能表示的整数范围是〔〕A、-127—+127B、-128—+128C、-127—+128D、-128—+12721.计算机中运算器和控制器合称为〔〕A、CPUB、ALUC、主机D、ENIAC22.32位的个人计算机,一个字节〔Byte〕由〔〕位〔bit〕组成。A、4B、8C、16D、3223.假设机器中浮点数的表示格式如下:阶符阶码尾符尾尾数用补码,阶码〔阶码基数为2,尾数以规格化数表示〕用补码表示时,-123.625的表示形式为()。24.从功能上,8086的CPU由〔〕两局部组成。A、SP、ALUB、控制器、FLAGSC、EU、BIUD、EU、ALU25.标志存放器FLAGS中存放两类标志,即〔〕。A、符号标志、溢出标志B、控制标志、状态标志C、方向标志、进位标志D、零标志、奇偶标志26.假设AL=3BH,AH=7DH,则AL和AH中的内容相加后,标志CF、SF和OF的状态分别是〔〕。A、0、1、1B、1、1、1C、0、0、0D、1、1、027.假设AL=3BH,AH=7DH,则AL和AH中的内容相减后,标志CF、AF和PF的状态分别是〔〕。A、0、0、1B、1、1、1C、0、1、0D、1、0、028.以下有关指令指针存放器的说法中,哪一个是正确的〔〕。A、IP存放当前正在执行的指令在代码段中的偏移地址B、IP存放下一条将要执行的指令在代码段中的偏移地址C、IP存放当前正在执行的指令在存储器中的物理地址D、IP存放当前正在执行的指令在存储器中的段地址29.最小模式时,当M/为低电平时,表示CPU正在对〔〕进展。A、存储器B、I/O端口C、外部存储器D、EPROM30.下面有关MN/的表达正确的选项是〔〕A、是工作模式选择信号,由CPU产生,为高电平时CPU工作在最小模式,为低电平时,CPU工作在最大模式B、是工作模式选择信号,由CPU产生,为低电平时CPU工作在最小模式,为高电平时,CPU工作在最大模式C、是工作模式选择信号,由外部输入,为低电平时CPU工作在最小模式,为高电平时,CPU工作在最大模式D、是工作模式选择信号,由外部输入,为高电平时CPU工作在最小模式,为低电平时,CPU工作在最大模式31.*CPU的主频为250MHZ,则它的时钟周期为〔〕A、250nsB、50nsC、40nsD、4ns32.如果存储器时使用BP寻址,则默认的段存放器是〔〕A、CSB、ESC、DSD、SS33.*单元在数据段中,DS=1000H,偏移地址为1200H,则它的物理地址为〔〕A、10000HB、11200HC、12100HD、13000H34.*系统中,SS=2360H,SP=0800H,假设将20H个字节的数据入栈,则SP的内容为〔〕A、0780HB、0820HC、23E20HD、07E0H35.*系统中,建立堆栈时SS=2360H,SP=0800H,经过一段时间后,SP的内容变为0700H,则堆栈中有多少个字的数据〔〕A、80HB、50HC、100D、100H36.设*一个单元的物理地址是54321H,则正确的逻辑地址表示为〔〕A、4321H:50000HB、54320H:1HC、5430H:0021HD、5432H:00001H37.如果一个程序在执行前CS=1000H,IP=2000H,该程序的起始地址是〔〕A、3000HB、12000HC、21000HD、1000H38.如果一个堆栈从地址1250H:0100H开场,SP=0050,则SS的段地址是〔〕A、12600HB、1260HC、1265HD、125BH39.假设[*]补=11101011B,[Y]补=01001010B,则[*–Y]补=〔〕A、10100001BB、11011111BC、10100000BD、溢出二、判断题1.80486的逻辑段不允许有段的重叠和穿插。2.在80486的32位标志存放器中,其每一位都有一定的含义。3.假设一个数据块的起始地址为20A0H:0F6H,则该数据块起始地址的实际地址是21B60H。4.SP的内容可以不指向堆栈的栈顶。5.存放器寻址其运算速度较低。6.字长是描述CPU数据总线宽度的指标。7.计算机的堆栈是一种特殊的数据存储区,数据存取采用先进先出的原则。8.当运算结果各位全部为零时,标志ZF=0。9.逻辑地址不是物理地址,但它是唯一的。三、填空题1.计算机是通过()、()、()总线把各个部件连接在一起,构成一个系统。2.8086的数据总线是()位,地址总线是()位。3.PC机主存储器中的根本存储单元的长度是()。4.80486可8位、()、和()、〔〕位的存放器。5.在微处理器的实地址方式下,段存放器的作用是()。6.假设一个数中含有3个"1”8.80486工作在实模式下时,假设需对堆栈区进展操作,其物理地址是由()和()组合产。9.程序设计中使用的地址称为(),而CPU对存储器单元进展操作时使用的地址称为〔)。10.按存储器的分级原则,其容量最大的一级存储器成为()。11.按存储器的分级原则,其速度最快的一级存储器成为()。12.微机的主要性能指标中,字长是指()。13.微型计算机由()和()两大局部组成。14.上电复位时,假设CPU的CS=0FFFFH,IP=0000H,则第一条指令从〔〕H方取15.8088与外部交换数据的总线宽度是位,与存放器组之间的数据总线宽度是位,EU内部总线宽度是位。16.设AL=80H,AH=83H,AL和AH中的内容相加后,CF=,OF=,ZF=,PF=,AF=,SF=。17.8086/8088将整个存储空间划分为许多逻辑段,每个逻辑段容量在以内,各个逻辑段相互重叠。18.8086/8088中,*单元只能有一个地址,但可以有多个地址。19.如果对堆栈进展操作,则段基址来源于,偏移地址来源于。20.*存储单元物理地址为32413H,则相对于段地址为3000H,其偏移地址为,假设,它的偏移地址是1003H,则其段地址为。21.在8086/8088系统中,所有读写存储器或I/O端口操作都是由通过系统总线完成的。四、简答题1.简述EU和BIU的主要功能"

2.8086和8088的主要区别是什么"第二章微处理器构造习题一一、简答题1.微处理器内部构造由哪几局部组成?阐述各局部的主要功能。2.微处理器级总线有哪几类?各类总线有什么作用?3.为什么地址总线是单向的,而数据总线是双向的?4.8086/8088微处理器内部有哪些存放器?其主要作用是什么?5.什么是虚拟存储器?其作用是什么?80386/80486的虚拟存储器容量最大有多少?6.何为RISC技术?与CISC相比其主要特点是什么?7.80386/80486有哪三种工作模式?各有何特点?8.什么叫流水线技术和超标量、超流水线技术?9.什么叫高度缓冲存储器技术?微机采用这种技术的根本目的是什么?10.试比拟实工作模式和仿8086工作模式的异同。11.8086的逻辑地址、物理地址和线性地址分别指什么?它们的寻址能力分别为多少?12.保护工作模式下的保护是何含义?该工作模式下主要进展哪几方面的保护功能?13.DOS下对超过640KB的内存如何管理?14.以下操作可使用哪些存放器?〔1〕加法和减法;〔2〕循环计数;〔3〕乘法和除法;〔4〕保存段地址;〔5〕表示运算结果的特征;〔6〕指令地址;〔7〕从堆栈中取数的地址;15.将以下两组的词汇和说明关联起来:〔1〕CPU;A.保存当前栈顶地址的存放器;

〔2〕EU;B.指示下一条要执行指令的地址;

〔3〕BIU;C.总线接口部件,实现执行部件所需要的所有总线操作;

〔4〕IP;D.分析并控制指令执行的部件;

〔5〕SP;E.存储程序、数据等信息的记忆装置,PC机有RAM和ROM两种;

〔6〕存储器;F.以后进先出方式工作的存储器空间;

〔7〕堆栈;G.把汇编语言程序翻译成机器语言程序的系统程序;

〔8〕指令;H.惟一代表存储器空间中的每个字节单元的地址;〔9〕状态标志;I.能被计算机直接识别的语言;

〔10〕控制标志;J.用指令的助记符、符号地址、标号等符号书写程序的语言;

〔11〕段存放器;K.把假设干个模块连接起来成为可执行文件的系统程序;

〔12〕物理地址;L.保存各逻辑段的起始地址的存放器;

〔13〕汇编语言;M.控制操作的标志,PC机有三位:DF、IF、TF;〔14〕机器语言;N.记录指令操作结果的标志,PC机有六位:OF、SF、ZF、AF、PF、CF;

〔15〕汇编程序;O.执行部件,由算术逻辑单元〔ALU〕和存放器组等组成;

〔16〕连接程序;P.由汇编程序在汇编过程中执行的指令;

〔17〕目标码;Q.告诉CPU要执行的操作,在程序运行时执行;

〔18〕伪指令R.机器语言代码。16.IBMPC有哪些存放器可用来指示存储器的地址?二、计算选择题1.如果*微处理器有20条地址总线和16条数据总线:〔1〕假定存储器地址空间与I/O地址空间是分开的,则存储器地址空间有多大?〔2〕数据总线上传送的有符号整数的范围有多大?2.将十六进制数62A0H与以下各数相加,求出其结果及标志位CF、AF、SF、ZF、OF和PF的值:〔1〕1234H;〔2〕4321H;〔3〕CFA0H;〔4〕9D60H3.从以下各数中减去4AE0H,求出其结果及标志位CF、AF、SF、ZF、OF和PF的值:〔1〕1234H;〔2〕5D90H;〔3〕9090H;〔4〕EA04H4.写出以下存储器地址的段地址、偏移地址和物理地址:〔1〕2134:10A0;〔2〕1FA0:0A1F〔3〕267A:B8765.给定一个数据的有效地址为2359H,并且〔DS〕=490BH,求该数据的物理地址。6.如果在一个程序段开场执行之前,〔CS〕=0A7F7.设〔B*〕=637DH,〔SI〕=2A9BH,位移量=0C237H,〔DS〕=3100H,求以下寻址方式产生的有效地址和物理地址:〔1〕直接寻址;〔2〕用B*的存放器间接寻址;〔3〕用B*的存放器相对寻址;〔4〕用B*和SI的基址变址寻址;〔5〕用B*和SI的基址变址且相对寻址8.假设〔CS〕=5200H时,物理转移地址为5A238H,则〔CS〕变成7800H时,物理转移地址为多少?9.设〔CS〕=0200H,〔IP〕=2BC0H,位移量=5119H,〔B*〕=1200H,〔DS〕=212AH,〔224A0H〕=0600H,〔275B9H〕=098AH。求使用以下寻址方式时的转移地址:〔1〕段内直接寻址方式;〔2〕使用B*的存放器寻址的段内间接寻址方式;〔3〕使用B*的存放器相对寻址的段内间接寻址方式;10.有一块120个字的存储区域,其起始地址为625A:234D,写出这个存储区域首末单元的物理地址。11.两个十六进制数7825H和5A1FH分别相加和相减后,求运算结果及各标志位的值。第三章指令系统和寻址方式习题三一.选择题

1.指令ADDC*,55H[BP]的源操作数的寻址方式是()。

(A)存放器寻址(B)直接寻址(C)存放器间接寻址(D)存放器相对寻址

2.设(SS)=3300H,(SP)=1140H,在堆栈中压入5个字数据后,又弹出两个字数据,则(SP)=()。

(A)113AH(B)114AH(C)1144H(D)1140H

3.假设SI=0053H,BP=0054H,执行SUBSI,BP后,则()。

(A)CF=0,OF=0(B)CF=0,OF=1(C)CF=1,OF=0(D)CF=1,OF=1

4.(BP)=0100H,(DS)=7000H,(SS)=8000H,(80100H)=24H,(80101H)=5AH,(70100H)=01H,(70101H)=02H,指令MOVB*,[BP]执行后,(B*)=()。

(A)0102H(B)0201H(C)245AH(D)5A24H

5.实模式下80486CPU对指令的寻址由()决定。

(A)CS,IP(B)DS,IP(C)SS,IP(D)ES,IP

6.使用80486汇编语言的伪操作指令定义:VALDB2DUP(1,2,3DUP(3),2DUP(1,0))则在VAL存储区内前十个字节单元的数据是()。

(A)1,2,3,3,2,1,0,1,2,3(B)1,2,3,3,3,3,2,1,0,1

(C)2,1,2,3,3,2,1,0(D)1,2,3,3,3,1,0,1,0,1

7.以下四条指令都可用来使累加器清"0",但其中不能清"进位"位的是()。

(A)*ORAL,AL(B)ANDAL,0(C)MOVAL,0(D)SUBAL,AL

8.假设(A*)=96H,(B*)=65H,依次执行ADDA*,B*指令和DAA指令后,(AL)=()。

(A)0FBH(B)01H(C)61H(D)0BH

9.以下能使CF标志置1的指令是()。

(A)CMC(B)CLC(C)STC(D)CLD

10.MOVA*,[BP+SI]隐含使用的段存放器是()。

(A)CS(B)DS(C)ES(D)SS

11.设AL=7FH,要使AL=80H,应使用以下哪一条指令()。

(A)ANDAL,80H(B)ORAL,80H(C)*ORAL,80H(D)NOTAL

12.在执行十进制调整指令DAA,DAS之前必须将结果存放于()中。

(A)A*(B)AH(C)AL(D)BL

13.以下指令执行后影响标志位的是()。

(A)MOV(B)PUSH(C)ADD(D)*CHG

14.唯一能对应存储单元的地址是()。

(A)物理地址(B)端口地址(C)有效地址(D)逻辑地址

15.计算机能直接执行的语言是()。

(A)机器语言(B)汇编语言(C)高级语言(D)程序设计语言

16.需采用先进后出原则操作的存储区是()。

(A)存放器组(B)地址缓冲器(C)数据存放器(D)堆栈区

17.存放器SP用于对()的操作。

(A)空闲单元(B)堆栈单元(C)数据单元(D)指令单元

18.假设(B*)=1000H,(DS)=2000H,(21000H)=12H,(21001H)=34H,执行LEASI,[B*]指令后,SI存放器的内容是()。

(A)1234H(B)3412H(C)1000H(D)0010H

19.假设(AL)=80H,执行NEGAL指令后,CF和OF标志位的状态分别为()。

(A)0和0(B)0和1(C)1和0(D)1和1

20.假设要完成〔A*〕*7/2运算,则在以下四条指令之后添加()指令。MOVB*,A*;MOVCL,3;SALA*,CL;SUBA*,B*()。

(A)RORA*,1(B)SALA*,1(C)SARA*,1(D)DIVA*,2

21.在保护模式下,代码段的段基址存在于()中。

(A)段选择符(B)指令指针存放器(C)段存放器(D)段描述符

22.查表指令*LAT规定,待查表的首址应存入()中。

(A)BP(B)SI(C)DI(D)B*

23.将要取的*一条指令的偏移地址由()提供。

(A)SI(B)BP(C)SP(D)IP

24.存放器间接寻址方式中,操作数在()中。

(A)通用存放器(B)堆栈(C)主存单元(D)段存放器

25.运算型指令的寻址和转移型指令的寻址,其不同点在于()。

(A)前者取操作数,后者决定程序的转移地址

(B)后者取操作数,前者决定程序的转移地址

(C)两者都是取操作数(D)两者都是决定程序的转移地址

26.JMPWORDPTR[DI]是()。

(A)段内间接转移(B)段间间接转移(C)段内直接转移(D)段间直接转移

27.INC指令不影响()标志。

(A)OF(B)CF(C)SF(D)ZF

28.逻辑移位指令SHL用于()。

(A)带符号数乘2(B)带符号数除2(C)无符号数乘2(D)无符号数除2

29.算术移位指令SAR用于()。

(A)带符号数乘2(B)带符号数除2(C)无符号数乘2(D)无符号数除2

30.以下指令中,有语法错误的选项是()。

(A)MOV[SI],A*(B)INAL,D*

(C)*ORA*,1234H(D)OUT210H,AL

31.在以下伪指令中定义字变量的是()。

(A)DD(B)DW(C)DQ(D)DT

32.以下指令中,能使AL的内容固定为偶数的是()。

(A)ADDAL,01H(B)ORAL,0FEH(C)ANDAL,0FEH(D)*ORAL,0FEH

33.改变()存放器的值,可改变堆栈中栈顶元素的位置。

(A)BP(B)IP(C)SP(D)B*

34.加减类运算指令对标志位的状态()。

(A)有影响(B)局部影响(C)无影响(D)任意

35.当AH=()时,执行INT21H指令可在屏幕上显示一组字符。

(A)01H(B)02H(C)09H(D)0AH

36.VARDW1,2,$+2,5,6假设汇编时VAR分配的偏移地址是2010和,则汇编后2014H单元的内容是()。

(A)6H(B)14H(C)5H(D)16H

37.假设*数据段位于存储区68000H~7FFFFH,则该数据段的段基址是()。

(A)68000H(B)7FFFFH(C)6000H(D)6800H

38.SP的作用是用来指示〔〕。

(A)栈顶元素的有效地址(B)下一条要执行指令的地址

(C)下一条要取的指令的地址(D)栈底元素的有效地址

39.在数据传送指令执行过程中,不能直接与立即数进展传送的是〔〕。

(A)通用存放器(B)段存放器(C)存储器(D)通用存放器和存储器

40.转移类指令对标志位的状态〔〕。

(A)有影响(B)局部影响(C)无影响(D)随意

41.欲从存储单元取*操作数,可采用〔〕。

(A)存放器寻址、存放器间接寻址(B)立即寻址、直接寻址

(C)立即寻址、存放器间接寻址(D)存放器间接寻址、直接寻址

42.在指令MOVA*,0执行后,CPU状态标志位ZF的取值〔〕。

〔A〕为0〔B〕为1〔C〕不确定〔D〕不改变

43.AL=10010111H,BL=00010101H,执行ADDAL,BL指令后,OF、SF、CF、ZF标志的状态为〔〕。

(A)1、0、1、1(B)1、1、0、0(C)0、0、1、1(D)0、1、0、1

44.以下指令中,错误的选项是〔〕。

(A)MOVB*,OFFSETBUF(B)LEASI,BUF

(C)LEADI,OFFSETBUF(D)MOVBP,SEGBUF

45.输入/输出指令对标志位的状态〔〕。

〔A〕有影响〔B〕局部影响〔C〕无影响〔D〕任意

46.以下描述正确的选项是〔〕。

(A)汇编语言仅由指令性语句组成

(B)汇编语言包括指令性语句和伪指令语句

(C)指令性语句和伪指令语句的格式是完全一样的

(D)指令性语句和伪指令语句需经汇编程序翻译成机器代码后才能执行

47.以下指令中不属于逻辑运算指令的是〔〕。

〔A〕*OR〔B〕CWD〔C〕NOT〔D〕OR

48.假定D*=10111001B,CL=3,CF=1,则执行指令SHLD*,CL后,D*的值为〔〕。

〔A〕005CH〔B〕0017H〔C〕1700H〔D〕05C8H

49.以下指令中不会改变指令指针存放器内容的是〔〕。

〔A〕MOV〔B〕JMP〔C〕CALL〔D〕RET

50.伪指令ENDP告诉汇编程序〔〕。

〔A〕宏定义完毕〔B〕过程定义完毕

〔C〕段定义完毕〔D〕过程运行完毕

51.利用DOS系统功能调用的9号〔AH=9〕功能,显示一个字符串,其入口参数应为〔〕。

〔A〕DS:D*=字符串首地址〔B〕DS:D*=字符串末地址

〔C〕CS:D*=字符串首地址〔D〕CS:D*=字符串末地址

52.在以下伪指令中定义双字变量的是〔〕。

(A)DB(B)DW(C)DD(D)DT

二、判断题

1.指令MOVA*,[B*]的源操作数是存放器寻址方式。

2.对堆栈区的操作必须遵循先进先出的原则。

3.比拟两个带符号数的大小,可根据CF标志来判断。

4.逻辑操作符AND,OR,*OR和NOT,只能用于数字表达式。

5.不能给段存放器赋立即数。

6.OF位可用来表示有符号数的溢出。

7.无条件转移指令只能用于段内直接转移。

8.MOVA*,[BP]的源操作数的物理地址为16*(DS)+(BP)。

9.指令MOVDI,OFFSET[B*][SI]是正确的。

10.指令MOVCS,B*是非法的。

11.指令NOTA*,B*是合法的。

12.MOV[B*][BP],A*是对的。

13.80486中对堆栈单元的存取操作是以字节为单位的。

14.JMP指令要影响标志位。

15.INC指令影响所有状态标志。

16.欲交换存放器SI,DI的内容,可用指令*CHGSI,DI实现。

17.CPU中的程序计数器IP中存放的是指令的逻辑地址。

18.两个符号一样的数相减不会产生溢出。

19.汇编程序就是汇编语言程序。

20.相对寻址中的位移量只能用16位表示。

21.CLD指令是MOVSB指令的使用条件之一。

22.段存放器间不能直接进展数据传送。

23.要把变量BUFF的有效地址送给B*,可用MOVB*,BUFF指令。

24.当对堆栈段的数据进展操作时,其操作数的有效地址可保存在BP中。

25.TEST指令属于逻辑运算指令。

26.CS和IP都不能作传送指令的目的操作数。

三、填空题

1.假设SS=5310H,SP=0E30H,其物理地址为()。

2.假设CH=07H,CL=08H,执行指令ADDCH,CL后,AF=(),CF=(),OF=(),PF=()。

3.指令由()和()两个字段构成。

4.条件转移指令JNE的测试条件是()。

5.假设用指针〔BP〕存储器,则数据包含在()段中。

6.假设A*=1234H,SP=1000H,指令PUSHA*执行后A*=(),SP=()。

7.指令采用()寻址方式时操作数是在代码段中。

四、阅读程序

程序中数据定义如下:

DATA1DW"

DATA2DB32DUP(")

DATA3DD"

COUNTEQU$-DATA1

此时COUNT的值是〔〕。

2.分析以下程序段,说出其功能。MOVA*,1000H

MOVDS,A*

MOVES,A*

MOVSI,0100H

MOVDI,0200H

MOVC*,50D

REPMOVSB

3.写出以下程序段的功能

MOVB*,2000H

MOVDS,B*

*ORAL,AL

MOVC*,100

AGAIN:MOV[B*],AL

INCB*

LOOPAGAIN

4.写出以下程序段的功能

LEASI,BUFFER

LEADI,ARRAY

MOVC*,100

*ORBL,BL

LP:CMP[SI],01H

JNZLP1

INCBL

LP1:INCSI

LOOPLP

MOV[DI],BL

5.写出以下程序段的功能

MOVC*,16

MOVA*,N

MOVBH,0

LP0:SHLA*,1

JCLP

INCBH

LP:LOOPLP0

MOVSUM,BH

6.写出以下程序段的功能

MOVAL,N

ANDN,0FH

MOVBL,N

SHRAL,4

MOVBH,AL

7.执行以下程序段后,A*=?

MOVA*,0702H

MOVBH,09H

AAD

DIVBH

8.下面程序段执行后AL=?

ABCDW2152H,3416H,5731H,4684H

MOVB*,OFFSETABC

MOVAL,3

*LAT

9.执行下面的程序段后A*=?

MOVC*,5

MOVA*,50

NE*T:SUBA*,C*

LOOPNE*T

HLT

10.执行下面的程序段后A*=?

TABDW1,2,3,4,5,6

ENTRYEQU6

MOVB*,OFFSETTAB

ADDB*,ENTRY

MOVA*,[B*]

11.执行下面程序段后A*=

ARRAYDW1,2,3,4,5,6,7,8,9,10

COUNTEQU$-ARRAY

*ORA*,A*

MOVC*,COUNT

MOVSI,OFFSETARRAY

NE*T:ADDA*,[SI]

INCSI

LOOPNE*T

12.写出以下程序段的功能

MOVAH,1

INT21H

ANDAL,0FH

MOVBL,AL

MOVAH,1

INT21H

SHLAL,4

ANDAL,BL

将从键盘承受到的两个字符拼在一起

13.执行以下程序段后

NDB07H

*ORBH,BH

MOVBL,N

RCLBL,1

ADDBH,BL

*ORBH,0FFH

HLT

存放器BH的值是,存放器BL的值是。

14.分析以下程序段

MOVAL,N

*ORAH,AH

MOVCL,4

DIVCL

当N=3CH时,程序执行完后A*=

15.程序段如下:

CLC

MOVAL,6

MOVBL,9

ADDAL,BL

MOVBL,AL

DAA

执行上面程序段后,AL=,AF=,BL=

16.执行以下指令后

TABLEDB19H,55H,9CH

LEAB*,TABLE

MOVAL,[B*]

*ORAL,89H

MOV[B*],AL

存放器AL的值是

17.分析以下程序段,说明该程序段执行何种功能。

MOVC*,10

MOVDL,30H

NE*T1:MOVAH,2

INT21H

INCDL

LOOPNE*T1

18.执行以下指令后

MOVA*,1245H

MOVB*,5689H

ADDAL,BL

MOVCL,AL

MOVAL,AH

ADCAL,BH

DAA

存放器AL的值是,存放器CL的值是

19.分析以下程序段:

MOVAL,N

*ORAH,AH

MOVBL,16

DIVBL

当N=57H时,程序执行完后A*=?

20.在下面程序的括号中分别填入如下指令:

①LOOP*H②LOOPNE*H③LOOPE*H

问在这三种情况下,当程序执行完后,A*、B*、C*、D*四个存放器中的内容分别是什么?

START:MOVA*,04

MOVB*,02

MOVC*,03

MOVD*,05

*H:INCA*

ADDB*,A*

SHRD*,1

〔〕

HLT

21.阅读程序,请说出该程序的功能是什么?

MOVA*,DATA

MOVDS,A*

LEASI,BUFFER

*ORBL,BL

MOVC*,100

AGAIN:MOVAL,[SI]

TESTAL,1

JNZNE*T

INCBL

NE*T:INCSI

LOOPAGAIN

HLT

22.从键盘上接收一字符,假设是"Y〞转YES,是"N〞转NO,否则继续等待,到输入"Y〞或"N〞为止。

程序段如下:

MOVAL,N

ANDAL,0FH

ADDAL,90H

DAA

ADCAL,40H

MOVRUT,AL

HLT

问:①假设N=5,以下程序执行后AL=?②该程序段的功能是什么?

23.执行以下程序段后:

DATASEGMENT

DT1LABLEWORD

DT2DB12H,34H

DATAENDS

………………

MOVAL,DT2

MOVD*,DT1

存放器AL的值是①,存放器D*的值是②。

24.读以下程序,请说出该程序的功能是什么?

DATASEGMENT

SUMDW0

DATAENDS

STACKSEGMENT

DB200DUP〔?〕

STACKENDS

CODESEGMENT

ASSUMEDS:DATA,SS:STACK,CS:CODE

START:MOVA*,DATA

MOVDS,A*

MOVC*,50

MOVA*,0

MOVB*,1

NE*T:ADDA*,B*

INCB*

INCB*

DECC*

JNENE*T

MOVSUM,A*

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

25.设伪指令定义如下,请画出内存分配示意图。

BUFDB"

DW‘AB’

DW‘C’

DW1234H

DB‘EF’

26.执行以下程序段后:

DATASEGMENT

DT1DW8A9BH

DT2DB7CH,6DH

DATAENDS

MOVA*,DT1

MOVB*,OFFSETDT1

MOVSI,OFFSETDT2

存放器B*的值是①,存放器SI的值是②。

27.执行以下指令后:

TABLEDB10H,33H,41H

┉┉

MOVB*,OFFSETTABLE

MOVAL,[B*]

*ORAL,80H

MOV[B*],AL

存放器AL的值是多少?

28.执行以下程序段后:

DATASEGMENT

N1DW3355H

N2DB23H,89H

DATAENDS

MOVA*,N1

MOVDI,OFFSETN1

MOVBP,OFFSETN2

存放器DI的值是多少?存放器BP的值是多少?

29.执行以下指令后:

DATDB10H,33H,41H

┉┉

LEAB*,DAT

MOVA*,SEGDAT

MOVES,A*

MOVAL,ES:[B*]

*ORAL,80H

MOVES:[B*],AL

存放器AL的值是多少?

30.执行以下程序段后:

BUFDB01H

……

*ORAL,AL

MOVAL,BUF

MOVBL,AL

SALAL,1

ADDAL,BL

*ORAL,0FFH

HLT

存放器AL的值是多少?存放器BL的值是多少?

五.程序填空

1.以下程序是在键盘上输入120个字符,然后将输入反序后显示在屏幕上。请将程序填写完整。

STACK1SEGMENT

STPDW120DUP(")

STACK1ENDS

CODESEGMENT

ASSUMECS:CODE,SS:STACK1

START:MOVA*,STACK1

MOVSS,A*

MOVSP,SIZESTPMOVC*,120

LOOP1:MOVAH,01H

INT21H

PUSHA*

()

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

INT21H

MOVC*,120

LOOP2:()

MOVAH,02H

INT21H

LOOPLOOP2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

六、编写程序

1.在STR到STR+49单元中存放着一个字符串,试编写一个程序,测试字符串中是否存在数字,如有,则把DL的第五位置1,否则将该位置0。

2.试编程实现,从键盘接收N个〔N≤60〕8位二进制数,统计其中奇数的个数,并将结果显示在屏幕上。

3.有100字节的数据块存放在以5C10H:2000H开场的存储区内,要求编写一个完整程序将数据移动到以5C10H:2008H开场的存储区内。

4.数组A包含100个互不相等的整数,数组B包含150个互不相等的整数,试编程实现将数组A和数组B都有的整数存放在数组C中。5.在以BASE起始的表中存有一组字符,它以‘回车’〔0DH〕完毕。请编写程序:实现从该表中查找关键字KEY〔设关键字KEY在AL中〕,并将找到的第一个关键字偏离表首的位置存放在存放器D*中,假设无此关键字,D*返回值为-1。

6.编写一个中断程序,实现人机对话。要求执行程序时,显示‘WHATISYOURNAME?’,在回车换行后,接收键盘输入信息,并显示。

7.编写程序找出BUF数据区中50个带符号数的最大值和最小值,并分别存入MA*和MIN单元。

8.试编程实现从键盘接收N个〔N≤50〕8位二进制数,统计偶数的个数及偶数之和,并将统计的个数以十进制方式显示在屏幕上。9.以STRING起始的字符串的最大长度为80个字符,字符串的完毕用字符$表示。编写程序在该字符串中查找是否有空格符〔ASCII码为20H〕,假设有就将第一个空格字符串中的位置〔00H~4FH〕存入POST单元;假设无空格则将-1存入POST。

10.BUFFER字节数组中存有一组无序列字节数数据,列的长度表示在BUFFER的第一个字节中KEY中为一个字节数据,编写程序在BUFFER中查找有无KEY,假设有就完毕,假设没有就将KEY参加到BUFFER中去,并修改列的长度。

11.利用移位及数据循环指令完成将DHAL中的16位二进制乘以8的运算,结果仍存入DHAL中。

12.分别从键盘上接收两长度相等的组数A和B,试完成两数组的求和任务,将结果存放在数组C中,并显示在屏幕上。13.编写程序,将键盘输入的小写字母用大写字母显示出来。

14.要求从键盘接收一个十进制数字,然后找出它的前导数字和后继数字,并按相反的顺序显示输出。

15.设在变量*、Y、Z中存放有三个数,假设三个数都不为0,则求出三个数之和存入U中,假设有一个为0,则将其它两个单元也清零,编写此程序。

16.求出首地址为DATA的M个字节的无符号数组中最小奇数,并把它存放于DL中。第四章汇编语言程序设计习题四例4-1写出以下变量的内容:VAR1DB125,125/3,-1,-10HVAR2DW125,125/3,-1,-10HVAR3DB

‘AB’,‘CD’VAR4DW

‘AB’,‘CD’解:按十六进制数依次写出各个变量的内容为:VAR1:7D,29,FF,F0VAR2:007D,0029,FFFF,FFF0VAR3:41,42,43,44VAR4:4142,4344按内存存储顺序给出:7D,29,FF,F0,7D,00,29,00,FF,FF,F0,FF,41,42,43,44,42,41,44,43例4.2设有以下伪指令:STARTDB1,2,3,4,’ABCD’DB3DUP〔?,1〕BUFDB10DUP〔?〕,15LEQUBUF-START求L的值。解:由EQU伪指令知,L的值为BUF的偏移地址减去START的偏移地址,而变量START共占用8个字节,第2行定义的变量〔无变量名〕共占用6个字节,因此,L的值为8+6=14=0EH。例4.3在缓冲区DATABUF中保存有一组无符号数据〔8位〕,其数据个数存放在DATABUF的第1、2个字节中,要求编写程序将数据按递增顺序排列。〔与教材p.114例类似,但方法不同〕解:这里采用双重循环实现数据的排序,这可使程序变得简单。N=100;设有100个数据STACKSEGMENTSTACK‘STACK’DW100HDUP(")TOPLABELWORDSTACKENDSDATASEGMENTDATABUFDWNDBNDUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVA*,DATAMOVDS,A*MOVES,A*MOVA*,STACKMOVSS,A*LEASP,TOP;取出随机数据MOVC*,DATABUFLEASI,DATABUF+2MOVBL,23MOVAL,11LP:MOV[SI],ALINCSIADDAL,BLLOOPLP;数据排序MOVC*,DATABUFDECC*LEASI,DATABUF+2ADDSI,C*LP1:PUSHC*PUSHSILP2:MOVAL,[SI]CMPAL,[SI-1]JAENO*CHG*CHGAL,[SI-1]MOV[SI],ALNO*CHG:DECSILOOPLP2POPSIPOPC*LOOPLP1;数据排序完毕MOVAH,4CH;返回DOSMOVAL,0INT21HCODEENDSENDSTART例4-4有一组数据(16位而进制数)存放在缓冲区BUF1中,数据个数保存在BUF1的头两个字节中。要求编写程序实现在缓冲区中查找*一数据,如果缓冲区中没有该数据,则将它插入到缓冲区的最后;如果缓冲区中有多个被查找的数据,则只保存第一个,将其余的删除。解:在缓冲区BUF中搜索指定的数据,当没有找到时,插入该数据;当找到时,进入搜索多余的重复数据,每找到一个就删除它〔将缓冲区的剩余数据向前移动一个字〕。当然应注意更新缓冲区的长度单元。STACKSEGMENTSTACK'STACK'DW100HDUP(")TOPLABELWORDSTACKENDS;设缓冲区原有10个字,指定的数据为〔NEW〕=56AAHDATASEGMENTBUFDW10DW1000H,0025H,6730H,6758H,7344H,2023H,0025H,6745H,10A7H,0B612HDW10DUP(")NEWDW56AAHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVA*,DATAMOVDS,A*MOVES,A*MOVA*,STACKMOVSS,A*LEASP,TOP;搜索指定的数据MOVC*,BUFLEASI,BUF+2MOVA*,NEWL1:CMPA*,[SI]JZL2.......INCSIINCSILOOPL1;没有找到,则插入数据MOV[SI],A*INCBUFJMPOK;找到后,在剩余局部搜索重复的数据L2:DECC*INCSIINCSIL3:CMPA*,[SI]JZL4INCSIINCSILOOPL3JMPOK;找到一个重复数据,则删除它L4:PUSHSIDECC*PUSHC*MOVDI,SIINCSIINCSICLDREPMOVSWDECBUFPOPC*POPSIJMPL3;删除后,返回继续搜索重复的数据OK:MOVAH,4CH;返回DOSMOVAL,0INT21HCODEENDSENDSTART例4.5在缓冲区DAT1和DAT2中,存放着两组递增有序的8位二进制无符号数,其中前两个字节保存数组的长度,要求编程实现将它们合并成一组递增有序的数据DAT,DAT的前两个字节仍用于保存数组长度。解:这里要用到3个指针的使用。对于写指针首选使用DI,两个读指针可采用SI和B*,分别指示DAT1和DAT2。这样可适时使用字符串指令,以简化程序设计。在设计中,将用B*指示的缓冲区DAT2内容读入AL,这样,当要将DAT1的内容传送到DAT时,可采用MOVSB指令;当要将DAT2的内容传送到DAT时,可采用STOSB指令。STACKSEGMENTSTACK'STACK'DW100HDUP(")TOPLABELWORDSTACKENDS;设DAT1中有10个数据,DAT2中有13个数据DATASEGMENTDAT1DW10DB10H,25H,67H,68H,73H,83H,95H,0A8H,0C2H,0E6HDAT2DW13DB05,12H,26H,45H,58H,65H,67H,70H,76H,88H,92H,0CDH,0DEHDATDW"DB200DUP(")DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVA*,DATAMOVDS,A*MOVES,A*MOVA*,STACKMOVSS,A*LEASP,TOPMOVC*,DAT1MOVD*,DAT2MOVDAT,C*ADDDAT,D*LEASI,DAT1+2LEAB*,DAT2+2LEADI,DAT+2CLDL1:MOVAL,[B*]INCB*L2:CMPAL,[SI]L3MOVSB;DAT1区中的数据传送到DAT区DECC*JZL4JMPL2L3:STOSB;DAT2区中的数据传送到DAT区DECD*JZL5JMPL1L4:MOVSI,B*DECSIMOVC*,D*L5:REPMOVSBMOVAH,4CH;返回DOSMOVAL,0INT21HCODEENDSENDSTART例4.6缓冲区BUFA内有20个互不相等的整数〔其序号从0到19〕,缓冲区BUFB内有30个互不相等的整数〔其序号从0到29〕。编写程序完成:将既在BUFA中出现又在BUFB中出现的整数〔设为*〕存放在缓冲区BUFC中,并将*在BUFA和BUFB中的序号分别存放于缓冲区BUFCA和BUFCB中。解:这里需要5个指针,但BUFC、BUFCA和BUFCB为同步操作,只需要一个指针,寻址方式为存放器相对寻址,即〔设AL为找到的值,DL、BL为序号〕MOVBUFC[DI],ALMOVBUFCA[DI],DLMOVBUFCB[DI],BL;对序号也应小心处理,我们采用存放器相对寻址,例如MOVAL,BUFA[SI],其中SI即为序号。STACKSEGMENTSTACK'STACK'DW100HDUP(")TOPLABELWORDSTACKENDSN1=20N2=30DATASEGMENTBUFADB10H,25H,67H,26H,68H,73H,83H,58H,0,06H,12H,0CDH,95HDB0A8H,0C2H,48H,0E6H,0F1H,1AH,0F5HBUFBDB05,12H,26H,45H,53H,60H,6AH,7FH,76H,88H,92H,0C1H,0DEH,0E1H,0F5HDB09,17H,23H,48H,58H,65H,67H,70H,7CH,82H,96H,0CDH,0D1H,0F1H,0FEHBUFCDB20DUP(")BUFCADB20DUP(")BUFCBDB20DUP(")DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVA*,DATAMOVDS,A*MOVES,A*MOVA*,STACKMOVSS,A*LEASP,TOP;以BUFA为外循环,每个字节与BUFB的所有字节比拟〔构成内循环〕,;以确定是否存在一样的值。MOVC*,N1*ORSI,SI*ORDI,DIL1:MOVAL,BUFA[SI]PUSHC*MOVC*,N2*ORB*,B*L2:CMPAL,BUFB[B*]JZL3INCB*LOOPL2JMPL4;找到一样的值后,进展值传送和序号保存。L3:MOVBUFC[DI],ALMOVD*,SIMOVBUFCA[DI],DLMOVBUFCB[DI],BLINCDIL4:POPC*INCSILOOPL1MOVAH,4CH;返回DOSMOVAL,0INT21HCODEENDSENDSTART4.2习题1.写出完成以下要求的变量定义语句:〔1〕在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;〔2〕在变量var2中保存字符串:’BYTE’,’word’,’WORD’;〔3〕在缓冲区buf1中留出100个字节的存储空间;〔4〕在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;〔5〕在变量var3中保存缓冲区buf1的长度;〔6〕在变量pointer中保存变量var1和缓冲区buf1的偏移地址。2.设变量var1的逻辑地址为0100:0000,画出以下语句定义的变量的存储分配图:var1DB12,-12,20/6,4DUP〔0,55H〕var2DB

‘Assemble’var3DW

‘AB’,‘cd’,‘E’var4DWvar2var5DDvar23.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因〔设VAR1,VAR2为字变量,L1为标号〕:〔1〕MOVSI,100〔2〕MOVB*,VAR1[SI]〔3〕MOVA*,[B*]〔4〕MOVAL,[D*]〔5〕MOVBP,AL〔6〕MOVVAR1,VAR2〔7〕MOVCS,A*〔8〕MOVDS,0100H〔9〕MOV[B*][SI],1〔10〕MOVA*,VAR1+VAR2〔11〕ADDA*,LENGTHVAR1〔12〕ORBL,TYPEVAR2〔13〕SUB[DI],78H〔14〕MOVSVAR1,VAR2〔15〕PUSH100H〔16〕POPCS〔17〕*CHGA*,ES〔18〕MOVDS,CS〔19〕JMPL1+5〔20〕DIVA*,10〔21〕SHLBL,2〔22〕MOVAL,15+23〔23〕MULC*〔24〕*CHGCL,[SI]〔25〕ADCCS:[0100],AH〔26〕SBBVAR1-5,1544.说明以下指令对的区别:〔1〕MOVA*,VAR1与MOVA*,OFFSETVAR1〔2〕MOVA*,VAR2与LEAA*,VAR2〔3〕MOVAL,LENGTHVAR1与MOVAL,SIZEVAR1〔4〕MOVAL,ES:[DI]CMPAL,[SI]与CMPSB〔5〕SHRAL,1与SARAL,1〔6〕SHRAL,1与RORAL,1〔7〕ROLB*,1与RCLB*,15.写出以下转移指令的寻址方式〔设L1为标号,VAR1为字型变量,DVAR1为双字型变量〕:〔1〕JMPL1〔2〕JMPNEARL1〔3〕JNZL1〔4〕JMPB*〔5〕JGL1〔6〕JMPVAR1[SI]〔7〕JMPFARPTRL1〔8〕JMPDVAR16.设〔DS〕=2000H,〔B*〕=0100H,〔SI〕=0002H,〔20100〕=3412H,〔20102〕=7856H,〔21200〕=4C2AH,〔21202〕=65B7H,求以下指令执行后A*存放器的内容:〔1〕MOVA*,1200H;〔2〕MOVA*,B*;〔3〕MOVA*,[1200H];〔4〕MOVA*,[B*];〔5〕MOVA*,1100[B*];〔6〕MOVA*,[B*][SI];〔7〕MOVA*,1100[B*][SI]7.执行以下指令后,D*存放器中的内容是多少?TABLEDW25,36,-1,-16,10000,13PYLDW7……MOVB*,OFFSETTABLEADDB*,PYLMOVD*,[B*]8.如果堆栈的起始地址为2200:0000,栈底为0100H,〔SP〕=00A8H,求〔1〕栈顶地址;〔2〕SS的内容;〔3〕再存入数据5678H,3AF2H后,SP的内容。9.设已用伪指令EQU定义了4个标识符:N1EQU2100N2EQU10N3EQU20000N4EQU25000以下指令是否正确?并说明原因。〔1〕ADDAL,N1-N2;〔2〕MOVA*,N3+N4;〔3〕SUBB*,N4-N3;〔4〕SUBAH,N4-N3-N1;〔5〕ADDAL,N2;〔6〕MOVAH,N2*N210.按以下要求写出指令:〔1〕将A*存放器的低4位清零,其余位不变;〔2〕将B*存放器的低4位置1,其余位不变;〔3〕将AL存放器的低4位保持不变,高4位取反;〔4〕测试B*中的位1和位2,当这两位同时为0时将AL置0FFH,否则AL清零;〔5〕测试B*中的位1和位2,当这两位有一位为0时将AL置0FFH,否则AL清零;〔6〕将AL中保存的字母ASCII码变换成相应的大写字母的ASCII码;〔7〕将AL中保存的字母ASCII码变换成相应的小写字母的ASCII码;〔8〕将A*中的各位取反;〔9〕将D*中的低7位取反,高9位不变;〔10〕将C*中的低8位与高8位互换。11.写出完成下述功能的程序段:〔1〕传送40H到AL存放器;〔2〕将AL的内容乘以2;〔3〕传送16H到AH存放器;〔4〕AL的内容加上AH的内容。计算最后结果〔AL〕=?12.写出完成下述功能的程序段:〔1〕从缓冲区BUF的0004偏移地址处传送一个字到A*存放器;〔2〕将A*存放器的内容右移2位;〔3〕将A*内容与BUF的0006偏移地址处的一个字相乘;〔4〕相乘结果存入BUF的0020H偏移地址处〔低位在前〕。13.设〔B*〕=11001011B,变量VAR的内容为00110010B,求以下指令单独执行后B*的内容:〔1〕*ORB*,VAR;〔2〕ANDB*,VAR;〔3〕ORB*,VAR;〔4〕*ORB*,11110000B;〔5〕ANDB*,00001111B;〔6〕TESTB*,1。14.设〔D*〕=10111011B,〔CL〕=3,〔CF〕=1,求以下指令单独执行后D*的内容:〔1〕SHRD*,1;〔2〕SARD*,CL;〔3〕SHLD*,CL;〔4〕SHLD*,1;〔5〕RORD*,CL;〔6〕ROLDL,CL;〔7〕SALDH,1;〔8〕RCLD*,CL;〔9〕RCRDL,115.选择题〔各小题只有一个正确答案〕〔1〕执行以下三条指令后:MOVSP,1000HPUSHA*CALLB*a.〔SP〕=1000H;b.〔SP〕=0FFEH;c.〔SP〕=1004H;d.〔SP〕=0FFCH;〔2〕要检查存放器AL中的内容是否与AH一样,应使用的指令为:a.ANDAL,AHb.ORAL,AHc.*ORAL,AHd.SBBAL,AH〔3〕指令JMPNEARPTRL1与CALLL1〔L1为标号〕的区别在于:a.寻址方式不同;b.是否保存IP的内容;c.目的地址不同;d.对标志位的影响不同。16.存放器D*:A*组成32位数,D*为高位,编写程序段实现:〔1〕D*:A*右移3位,并将移出的低3位保存在CL中;〔2〕D*:A*左移3位,并将移出的高3位保存在CL中;17.在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。18.利用移位、传送和相加指令实现A*的内容扩大10倍。19.在缓冲区VAR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果VAR中保存的为有符号数,则再编写程序实现将其按递减关系排列。20.编写程序段实现将BL中的每一位重复4次,构成32位的双字D*:A*,例如当BL=01011101B时,得到的〔D*〕=0F0FH,〔A*〕=0FF0FH。21.编写程序段实现将AL和BL中的每一位依次穿插,得到的16位字保存在D*中,例如〔AL〕=01100101B,〔BL〕=11011010B,则得到的〔D*〕=1011011010011001B。22.在变量VAR1和VAR2中分别保存有两个字节型的正整数,编写完整的汇编语言程序实现:〔1〕当两数中有一个奇数时,将奇数存入VAR1,偶数存入VAR2;〔2〕当两数均为奇数时,两个变量的内容不变;〔3〕当两数均为偶数时,两数缩小一倍后存入原处。23.在字变量VAR1、VAR2和VAR3中保存有3个一样的代码,但有一个错码,编写程序段找出这个错码,并将它送A*,其地址送SI;如果3个代码都一样,则在A*中置-1标志。24.分析以下程序段的功能:MOVCL,04SHLD*,CLMOVBL,AHSHLA*,CLSHRBL,CLORDL,BL25.以下程序段执行后,求B*存放器的内容:MOVCL,3MOVB*,0B7HROLB*,1RORB*,CL26.以下程序段执行后,求B*存放器的内容:MOVCL,5MOVB*,7D5CHSHRB*,CL27.设数组ARRAY的第1个字节存放数组的长度〔<256〕,从第2个字节开场存放无符号8位数,求数组元素之和〔结果放在A*中〕。如果计算的和超出16位数的范围,则给出溢出标志D*=-1。28.设BUF中存放有N个无符号数〔或有符号数〕,编程实现求它们的最小值〔存入A*〕和最大值〔存入D*〕。29.设BUFFER中存放有N个无符号〔第1个字节存放缓冲区的长度〕,编程实现将其中的0元素抹去,并更新其长度。30.编写程序实现N个字乘以或除以1个字,设BUFN存放N个字,BUF1存放乘数或除数,PRODUCT存放乘积,QUOTIENT存放商,REMAINDER存放余数。31.编写一个子程序实现统计AL中1的个数,然后检测出字节型缓冲区BUF中0和1个数相等的元素个数。32.设有n(设为17)个人围坐在圆桌周围,按顺时针给他们编号〔1,2,…,n〕,从第1个人开场按顺时针方向加1报数,当报数到m〔设为11〕时,该人出列,余下的人继续进展,直到所有人出列为止。编写程序模拟这一过程,求出出列人的编号顺序。33.编写子程序实现以十六进制数在屏幕上显示AL的内容。34.从键盘上读入一个正整数N〔0≤N≤65535〕,转换成十六进制数存入A*,并在屏幕上显示出来。35.在缓冲区BUFFER中,第1个字节存放数组的长度〔<256〕,从第2个字节开场存放字符的ASCII码,编写子程序完成在最高位给字符加上偶校验。36.编写程序完成求多位数〔N个字〕的绝对值。37.斐波那契数列的定义为:,编写求该数列前n项的子程序。38.编写程序实现循环显示10条信息,保存每条信息的变量分别为INFOM1~INFORM10。39.编写程序实现将包含20个数据的数组ARRAY分成两个数组:正数数组AR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论