汇编语言程序设计习题
- 格式:doc
- 大小:40.50 KB
- 文档页数:5
一、单项选择题(每小题1分,共20分)1、设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(A)A、85B92HB、86192HC、BB690HD、12169H2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B)A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS3、循环指令LOOPNZ终止循环的条件是(B)。
A、CX=0,且ZF=0B、CX=0,或ZF=1C、CX10,且ZF=0D、CX10,或ZF=14、对寄存器AX的内容乘以4的正确指令序列是(B)。
A、SHR AX,1 /SHR AX,1B、SHL AX,1/ SHL,AX,1C、ROL AX,1 /ROL AX,1D、RCR AX,1/ RCR AX,15、执行INC指令除对SF、ZF有影响外,还要影响的标志位是(A)。
A、OF,AF,PFB、OF,AF,CFC、OF,PF,CFD、AF,PF,CF6、设DH=10H,执行NEG DH指令后,正确的结果是(D)。
A、DH=10H CF=1B、DH=0F0H CF=0C、DH=10H CF=0D、DH=0F0H CF=17、下列传送指令中有语法错误的是(A)。
A、MOV CS,AXB、MOV DS,AXC、MOV SS,AXD、MOV ES,AX8、下面指令执行后,改变AL寄存器内容的指令是(D)。
A、TEST AL,02HB、OR AL,ALC、CMP AL,BLD、AND AL,BL9、执行除法指令后,影响的标志位是(D)。
A、CF,OFB、SF,ZFC、CF,OF,SFD、AF,CF,OF,PF,SF,ZF都不确定10、执行下面指令序列后,结果是(A)。
MOV AL,82H / CBWA、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H11、与MOV BX,OFFSET VAR指令完全等效的指令是(D)。
汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介1. 汇编语言的概念2. 汇编语言的特点3. 汇编语言的应用领域二、汇编语言的基本语法1. 数据类型及表示2. 指令格式及分类3. 寄存器使用规则三、汇编语言程序设计步骤1. 分析需求,确定程序功能2. 选择合适的汇编语言及开发环境3. 编写汇编代码,调试程序4. 优化程序性能四、常用汇编指令及功能1. 数据传输指令2. 算术运算指令3. 逻辑运算指令4. 控制流指令5. 字符串操作指令6. 中断指令五、汇编语言与C语言的接口编程1. extern声明汇编函数2. 调用汇编函数的方法3. 汇编函数与C函数的数据交换4. 实例分析:汇编语言实现字符串排序习题答案:一、汇编语言简介1. 汇编语言是一种低级编程语言,用于编写计算机程序。
(正确)2. 汇编语言可以直接操作计算机硬件资源。
(正确)3. 汇编语言程序可读性差,不易维护。
(正确)二、汇编语言的基本语法1. 数据类型及表示a. 字节:8位(正确)b. 字:16位(正确)c. 双字:32位(正确)d. 四字:64位(正确)2. 指令格式及分类a. 操作码(正确)b. 操作数(正确)c. 寄存器(正确)d. 标志位(正确)3. 寄存器使用规则a. 通用寄存器:AX, BX, CX, DX(正确)b. 段寄存器:CS, DS, ES, SS(正确)c. 指令指针:IP(正确)d. 状态寄存器:FLAGS(正确)三、汇编语言程序设计步骤1. 分析需求,确定程序功能(正确)2. 选择合适的汇编语言及开发环境(正确)3. 编写汇编代码,调试程序(正确)4. 优化程序性能(正确)四、常用汇编指令及功能1. 数据传输指令a. MOV:数据传送(正确)b. PUSH:压栈(正确)c. POP:出栈(正确)d. XCHG:交换数据(正确)2. 算术运算指令a. ADD:加法(正确)b. SUB:减法(正确)c. MUL:无符号乘法(正确)d. IMUL:有符号乘法(正确)3. 逻辑运算指令a. AND:逻辑与(正确)b. OR:逻辑或(正确)c. XOR:逻辑异或(正确)d. NOT:逻辑非(正确)4. 控制流指令a. JMP:无条件跳转(正确)b. JE:相等跳转(正确)c. JNE:不相等跳转(正确)5. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)6. 中断指令a. INT:软件中断(正确)b. INTO:中断向量表(正确)五、汇编语言与C语言的接口编程1. extern声明汇编函数(正确)2. 调用汇编函数的方法(正确)3. 汇编函数与C函数的数据交换(正确)4. 实例分析:汇编语言实现字符串排序(正确)汇编语言程序设计教案及习题答案教案章节:六、汇编语言的输入与输出1. 输入输出指令2. 字符串操作指令3. 实例分析:编写一个简单的输入输出程序七、汇编语言的杂项指令1. 杂项指令的概念2. 常用杂项指令及其功能3. 实例分析:杂项指令的应用八、汇编语言的子程序调用1. 子程序调用的概念2. 子程序的定义与调用3. 子程序的返回4. 实例分析:子程序在汇编语言中的应用九、汇编语言的程序举例1. 实例一:计算两个数的和2. 实例二:字符串的复制3. 实例三:数制的转换4. 实例四:文件的读写十、汇编语言程序的调试与优化1. 调试工具的使用2. 调试方法与技巧3. 程序优化的概念4. 程序优化的方法与技巧习题答案:六、汇编语言的输入与输出1. 输入输出指令a. IN:输入指令(正确)b. OUT:输出指令(正确)c. INPUT:输入函数(正确)d. PRINT:输出函数(正确)2. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)3. 实例分析:编写一个简单的输入输出程序(正确)七、汇编语言的杂项指令1. 杂项指令的概念(正确)2. 常用杂项指令及其功能a. NOP:无操作(正确)b. HLT:停止CPU运行(正确)c. CMC:翻转标志位(正确)d. ARPL:寄存器之间交换(正确)3. 实例分析:杂项指令的应用(正确)八、汇编语言的子程序调用1. 子程序调用的概念(正确)2. 子程序的定义与调用a. 定义子程序(正确)b. 调用子程序(正确)3. 子程序的返回(正确)4. 实例分析:子程序在汇编语言中的应用(正确)九、汇编语言的程序举例1. 实例一:计算两个数的和(正确)2. 实例二:字符串的复制(正确)3. 实例三:数制的转换(正确)4. 实例四:文件的读写(正确)十、汇编语言程序的调试与优化1. 调试工具的使用(正确)2. 调试方法与技巧(正确)3. 程序优化的概念(正确)4. 程序优化的方法与技巧(正确)汇编语言程序设计教案及习题答案教案章节:十一、汇编语言与操作系统1. 操作系统的概念2. 汇编语言在操作系统中的应用3. 实例分析:汇编语言编写简单的操作系统十二、汇编语言与设备驱动程序1. 设备驱动程序的概念2. 汇编语言在设备驱动程序开发中的应用3. 实例分析:汇编语言编写简单的设备驱动程序十三、汇编语言与嵌入式系统1. 嵌入式系统的概念2. 汇编语言在嵌入式系统中的应用3. 实例分析:汇编语言编写简单的嵌入式系统十四、汇编语言与汇编器的使用1. 汇编器的概念2. 汇编器的使用方法3. 实例分析:使用汇编器编写和调试汇编程序十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势2. 汇编语言在未来的应用领域3. 汇编语言学习的方法与建议习题答案:十一、汇编语言与操作系统1. 操作系统的概念(正确)2. 汇编语言在操作系统中的应用(正确)3. 实例分析:汇编语言编写简单的操作系统(正确)十二、汇编语言与设备驱动程序1. 设备驱动程序的概念(正确)2. 汇编语言在设备驱动程序开发中的应用(正确)3. 实例分析:汇编语言编写简单的设备驱动程序(正确)十三、汇编语言与嵌入式系统1. 嵌入式系统的概念(正确)2. 汇编语言在嵌入式系统中的应用(正确)3. 实例分析:汇编语言编写简单的嵌入式系统(正确)十四、汇编语言与汇编器的使用1. 汇编器的概念(正确)2. 汇编器的使用方法(正确)3. 实例分析:使用汇编器编写和调试汇编程序(正确)十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势(正确)2. 汇编语言在未来的应用领域(正确)3. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。
03《汇编语言程序设计》(总20页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《汇编语言程序设计》习题答案一、单项选择题(本大题共170小题,每小题2分)1、在汇编语言程序中,对 END 语句的叙述正确的是( C )。
A、END 语句是一可执行语句B、END 语句表示程序执行到此结束C、END 语句表示源程序到此结束D、END 语句在汇编后要产生机器码2、将 DX 的内容除以 2,正确的指令是( C )A、DIV 2B、DIV DX,2C、SAR DX,1D、SHL DX,13、下列数值表达式和地址表达式中,错误的是( D )。
A、MOV AL,8*14+4B、MOV SI,OFFSET BUF+13C、MOV CX,NUM2-NUM1D、MOV CX,NUM2+NUM14、用来存放下一条将要执行的指令地址的寄存器是 ( B )A、SPB、IPC、BPD、CS5、要使串处理从低地址向高地址进行,应把标志位置为 ( D )A、IF=1B、TF=0C、DF=1D、DF=06、设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A )A、20640HB、2063EHC、2063FHD、21900H7、十进制数269变换为十六进制数是( C )。
A、10BB、10CC、10DD、10E8、8位的微型计算机系统是以16位来表示地址,则该微机系统有( C )个地址空间。
A、255B、65535C、65536D、10485769、8位有符号二进制数能表示的最大十进制数是( D )。
A、256B、255C、128D、12710、十六进制数88H,可表示成下面几种形式,请找出错误的表示( D )。
A、无符号十进制数136B、带符号十进制数-120C、压缩型BCD十进制数88D、8位二进制数-8的补码表示11、有一个数值152,它与十六进制数6A相等,那么该数值是( B )。
汇编语言程序设计试题及答案一.名词解释(本大题共5小题,每小题3分,共15分)试解释下列名词的含义。
1.寄存器:计算机系统内,位于CPU内部的存储单元,CPU访问此类存储单元不需要使用总线。
2.物理地址:CPU通过地址总线向外发送的20位地址,在访问内存单元前,CPU必须先将CPU内部的逻辑地址转换为物理地址。
3.段基值:逻辑地址的一个组成部分,用于指示一个段在内存中的起始地址。
4.寻址方式:指令获取操作数的方式。
5.补码:计算机系统内部用于表示带符号数的一种编码,正整数的补码为其真值本身,负整数的补码为其真值变反加1的结果。
二.计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算结果。
1.将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?答案:二进制为 01100100B,十六进制为64H2.假设(DS)=0C00H,(BX)=0210H,对于指令MOV DS:100H[BX],AL,其目的操作数的物理地址为多少?答案:EA = (BX)+0100H = 0310H,物理地址 = (DS)*16 + EA = 0C000H + 0310H = 0C310H3.假设(BX)=0100H,(SI)=0020H,对于指令ADD DL,[BX][SI],其源操作数的偏移量为多少?答案:EA = (BX)+(SI)+ 0 = 0120H4.假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=?答案:每执行一条PUSH指令,(SP)被减2,因此执行5条PUSH指令后,(SP)=0060H – 5*2 =0060H -000AH = 0056H5.对于一个十进制数– 80,其二进制补码表示形式为多少?答案:首先求得二进制真值为– 01010000B,负数补码为变反加1的结果,即 10110000B三.排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。
汇编语言程序设计练习题阅读程序并完成填空:1.1.MOV BL,85HMOV AL,17HADD AL,BLAL=?,BL=?,CF=?2.2.MOV AX,BXNOT AXADD AX,BXINC AXAX=?,CF=?3.3.MOV AX,0FF60HSTCMOV DX,96XOR DH,0FFHSBB AX,DXAX=?,CF=?4.4.MOV BX,0FFFEHMOV CL,2SAR BX,CL5.5.MOV BX,0FFHAND BX,0FFFHOR BX,0F0FHXOR BX,00FFH上述程序段运行后,BX=?,CF=?6.6.CMP AX,BXJGE NEXTXCHG AX,BXNEXT:CMP AX,CXJGE DONEXCHG AX,CXDONE:。
试回答:(1)(1)上述程序段执行后,原有AX、BX、CX中最大数存放在哪个寄存器中?(2)(2)这3个数是带符号数还是无符号数?7.7.在数据段ADDR1地址处有200个字节,要传送到数据段ADDR2处。
MOV AX,SEG ADDR1MOV DS,AXMOV ES,-------MOV SI,-------MOV DI,OFFSET ADDR2MOV -----,200CLDREP ---------8.8.ADDR1开始的单元中连续存放两个双字数据,将其求和存放在ADDR2开始的单元。
MOV CX,2XOR BX,BXCLCNEXT:MOV AX,[ADDR1+BX]ADC AX,-------MOV [ADDR2+BX],AXADD --------,2--------- NEXT9.9.设初值AX=1234H,BX=5678H,DX=0ABCDH,则执行下面一段程序后AX=------,BX=----,DX=--------。
MOV CL,4SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL10.10.设有一个首地址为ARRA Y有N个字数据的数组,要求求出该数组之和,并把结果存入TOTAL地址中,有关程序如下:MOV CX,------MOV AX,0MOV SI,0START:ADD AX,-----ADD SI,2DEC CXJNZ STARTMOV ------,AX11.11.设段地址为1000H偏移地址为STR的5个字节的内容逐一装入累加器中,加1后,再送入STR为首地址的存储单元中,程序如下:MOV AX,1000HMOV ES,AXMOV DS,AX---------MOV DI,SIMOV CX,5CLDNEXT:LODSBADD AL,112.12.在一个首地址为STR、长度为N的字符串中查找空格,找到则向DL中送1,否则向DL中送-1。
1.假设字节单元(06925H)=12H,(06926H)=45H,(06927H)=78H,那么字单元(06925H)= C ,字单元(06926H)= D 。
a. 1245Hb. 4578Hc. 4512Hd. 7845H2.逻辑运算指令都是按A进行操作的,指令执行后只设置标志位,不保留结果的逻辑运算指令是H。
a. 位b. 字节c. 字d. BCD码e. ANDf. ORg. XORh. TEST3.和指令AND AL,55 AND 0F0H 等效的指令是,和MOV BX,0FH EQ 1111B等效的指令是。
a. AND AL,55Hb. AND AL,0F5Hc. AND AL,50Hd. AND AL,0F0He. MOV BX,0000Hf. MOV BX,0FHg. MOV BX,0FFHh. MOV BX,0FFFFH4.过程定义开始的伪指令是 C 。
宏定义结束的伪指令是G 。
a. SEGMENTb. MACROc. PROCd. ASSUMEe. ENDf. ENDSg. ENDMh. ENDP5.将数据37H定义为字节变量X1的语句是 A,数据37H定义为字变量X2的语句是 D 。
a. X1 DB 37b. X2 DB 37c. X1 DW 37Hd. X2 DW 37He. X1 DB 37H g. X2 DB 37H6.互换指令XCHG可以在两个寄存器之间互换数据,也可以在 A 与 C 之间互换数据。
a. 寄存器b. 立即数c. 存储单元d. 堆栈7.对程序流向的控制和转移,就是对执行指令地址的修改。
如在同一段内偏移,则修改 A ,如在两个段之间转移,则修改 C 。
a. IPb. CSc. CS和IPd. CS或IP1.8088/8086 CPU内部共有14个寄存器,其中有8个通用寄存器、2个变址寄存器、4个段寄存器。
2.8088/8086 CPU有7种数据寻址方式,其中采用寄存器寻址方式的指令执行速度最快。
汇编语言程序设计试卷一. (共75 题,共150 分)1.下列说法错误的是。
(2 分)A.机器指令的形式包含操作码和地址码B.计算机只能够识别规定好的机器指令C.不同计算机系统之间的机器指令能够相互兼容D.汇编语言的主要操作和机器指令基本上一一对应★检查答案标准答案:C2.两个有符号数相减,通过标志位判断结果是否溢出。
(2 分)A.ZFB.CFC.SFD.OF★检查答案标准答案:D(2 分)3.汇编语言和高级语言的比较,下列说法错误的是A.汇编语言和高级语言都不能被机器直接识别B.完成同样的功能,汇编语言占据空间小C.高级语言可以使用变量,但汇编语言不行D.汇编语言中有类似于高级语言的宏功能★检查答案标准答案:C4.下列寄存器中,哪个寄存器不能供汇编程序直接访问. (2 分)A.SPB.BPC.CSD.IP★检查答案标准答案:D5.下列寄存器,哪个不能作基址寄存器。
(2 分)A.BXB.BPC.SID.ESI★检查答案标准答案:C6.设有关寄存器及存储单元的内容如下:则指令MOV AX, 1100H[BX][SI] 执行完毕后,AX 寄存器中的值是。
(2 分)A.65B7HB.3412HC.4C2AHD.7856H★检查答案标准答案:AA.可以作立即寻址的操作数B.也可作某些存贮器操作数的的位移量组成部分C.在数据定义伪指令语句中给变量赋初值D.可以作目的操作数★检查答案标准答案:D8.若(ECX)=0ABCD1234H(BL)=0E3H,则语句MOVSX ECX,BL执行后:(ECX)的值为。
(2 分)A.0ABCD1234HB.0FFFFFFE3HC.000000E3HD.0ABCD12E3H★检查答案标准答案:B(2 分)9.若(AX)=0FFFDH ,则语句ADD AX,7FFFH 执行后,下列说法正确的是。
A.(AX) =7FFCH,(OF)=1 ,(CF)=1B.(AX) =17FFCH ,(OF)=1 ,(CF)=1C.(AX)=7FFCH,(OF)=0 ,(CF)=1 D.(AX)=17FFCH ,(OF)=0 ,(CF)=1★检查答案标准答案:C10.在语句INC SS:[BX] 中,操作数使用的段寄存器是。
第一章微型计算机系统概述1.3习题与综合练习1.解释和区别下列名词术语(1)微处理器(MP):具有中央处理器功能的大规模集成电路器件微型计算机(MC)微型计算机系统(MCS)(2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。
软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。
(3)字节:8位二进制是一个字节。
字:16位二进制构成一个字。
字长:计算机的运算部件能同时处理的二进制数据的位数。
(4)指令指针:存放BIU要取的下一条指令的偏移地址。
指令寄存器:指令译码器:状态寄存器:(5)存储单元:存储内容:存储地址:存储容量:(6)RAM:ROM:软件固化:2.冯·诺依曼计算机结构的特点是什么?(1)采用二进制数的形式表示数据和指令。
(2)将指令和数据存放在存储器中。
(3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。
3.件数计算机系统中复杂指令集和精简指令集的特点和用途。
复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。
CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。
所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。
精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。
每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。
因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。
4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。
微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。
汇编语言习题册(汇编语言课程设计组编制)汇编语言程序设计习题一.填空题1.汇编语言是一种_____,它用_____来表示操作码,用——或——来表示操作数或操作数地址,它与_________是一一对应的。
2.计算机中的指令由__________和________两部分组成。
3.指出下列指令源操作数的寻址方式:MOV AX, ARRAYF[SI] _______MOV AX, ES:[BX] _______MOV AX, [200H] _______MOV AX, [BX+DI] _______MOV AX, BX _______MOV AX, 1200H _______MOV AX, 20[BX+SI] _______MOV AX, [DI+20] _______4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,I(21203)=65H,下列指令执行后填入AX寄存器的内容:MOV AX,1200H ;(AX)=_______MOV AX, BX ;(AX)=_______MOV AX,[1200H] ;(AX)=_______MOV AX, [BX] ;(AX)=_______MOV AX,1100[BX] ;(AX)=_______MOV AX,[BX][SI] ;(AX)=_______MOV AX,1100[BX][SI] ;(AX)=_______5.条件码中最主要的是_____、_____、______、______。
6.对于乘法、除法指令,其目的操作数存放在______或______中,而其源操作数可以用除_______以外的任一寻址方式。
7.当指令“SUB AX,BX”执行后,CF=1,说明最高有效位_____;对____数,说明操作结果溢出。
第一章基础知识习题1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。
①无符号十进制数136 ②带符号十进制数-120③压缩型BCD码十进制数88 ④8位二进制数-8的补码表示2.十进制数转换为二进制数、八进制数、十六进制数①123 ②87 ③12.25 ④177 ⑤215.125 ⑥1133.十进制数转换为BCD码①111 ②131 ③23.44 ④123 ⑤345 ⑥127.364.完成下列十六进制数的减法①FFFF- AAAA= ②12DF – 02DA =5.写出下列二进制数的补码表示:①-1001110 ②-1001010 ③-0010110 ④+101010116.16位的二进制补码数所能表示的十进制最大数和最小数分别是什么? 16位二进制数所能表示的无符号数的范围又是多大?7.假设两个二进制数A=0110l010,B=l0001100,试比较它们的大小①A、B两数均为带符号的补码数。
②A、B两数均为无符号数。
第二章80x86计算机组织1.一台微型计算机的字长为16位,如果采用字节编址,那么它可以访问的最大存储空间是多少字节?试用16进制数表示该机的地址范围.。
2.PC机有哪两种主要的存储器?它们所起的主要作用是什么?3.有两个16位字lEF5和2A3c分别存放在PC机存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
4.写出下列存储器地址的段地址、偏移地址和物理地址。
(1)2314:0035 (2)1FD0:000A5.如果在一个程序段开始执行之前,(CS)=0A7F0H,(EP)=2D40H,试问该程序段的第一个字的物理地址是什么?6.如果一个堆栈从地址1250:0000开始SP的内容为0052H,问:(1)栈顶地址是什么?(2)栈底地址是什么?(3)在SS中的段地址是什么?(4)存入数据3445H后,SP的内容是多少?第三章80x86的指令系统和寻址方式1.假定(DS)=212AH,(CS)=0200H,(IP)=2BC0H,(BX)=1200HD=5119H,(224A 0)=0600H、(275B9)=098AH,试确定JMP指令的转移地址。
(3)段内直接寻址。
(2)使用Bx及寄布器寻址方式的段内间接寻址。
(3)使用Dx及寄存器相对寻址方式的段内间接寻址。
2.假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00AOH,(BX)=0100H,(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么?寻址方式?它的物理地址是多少?(1) MOV AX,0A8H (2) MOV AX,BX (3) MOV Ax,[100H](4)MOV AX,VAL (5) MOV AX,[BX] (6)MOV AX,ES:[BX](7)MOV AX,[BP] (8)MOV AX,[SI] (9)MOV Ax,[BX十10](10)MOV Ax,VAL[BX] (11)MOV Ax,[BX][SI](12)MOV AX,V AL[BX][SI] 3.设有关寄存器及存储单元的内容如下(DS)=2000H,(BX)=0』00H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(22203)=4CH,(22202)=0B7H,(21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。
(1)MOV AX,1200H (2)MOV AX,[BX] (3)MOV AX,[1200H](4)MOV AX,[BX] (5)MOV AX,1100[BX] (6)MOV AX,[BX][SI](7)MOV AX,l100[BX][SI]4.下面有四条等值语句,C1 EQU 1000C2 EQU 1C3 EQU 20000C4 EQU 25000下列指令哪些是不对的?请说明原因。
(1) ADD AL,C1一C2 (2)MOV AX,C3十C4 (3)SUB DX,C4一C3(4)SUB AH,C4一C3一Cl (5)ADC AL,C25.下面的数据传送指令中,错误的操作是()。
① MOV SS:[BX+DI],1000H② MOV DX,1000H③ MOV WORD PTR[BX],1000H④ MOV DS,2000H6.下面指令执行后,变量DAB中的内容是()。
DAW DW2A05HDAB DB 0FAH:MOV AL,BYTE PRT DAWSUB DAB,AL① 0DAH ② 0FAH ③ 0F5H ④ 0D0H7.执行下列指令后,正确的结果是()。
MOV AL,100MOV BL,-2① AL=100H BL=02H ② AL=64H BL=0FEH③ AL=64H BL=82H ④ AL=100H BL=0FEH8.完成下列操作,选用什么指令:(1)将AX的内容,减去0520H,和上次运算的借位;(2)将变量名TABL的段地址送AX;9.D1 DB 20H DUP(?)D2 DW D1请写出用一条指令实现取D1的偏移地址=>SI中的三种方法。
第四章汇编语言程序格式1.画图说明下列语句分配的存储空间及初始化的数据值。
(1)BYTE—vAR DB ‘BYTE7’,12,12H,2DuP(0,?,3DUP(1,2),?)(2)WORD—VAR DW 4DUP(0,1,2),?,-5,‘BY’,‘TE’,256H2.有符号定义语句如下:BUFF DB l,2,3,‘123’EBUFF DB 0L EQU EBUFF—BUFF问L的值为多少?3.现有下列数据段:DATA SEGMENTSTR1 DB‘ABCDEFGHIJKL'COUNT EQU -STR1BUF DB COUNT DUP(0)DATA ENDS下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。
试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1MOV DI,OFFSET BUFMOV CX,COUNT_________________LOOP:MOVSB_______________________________LOOP LOP4.已知数据段定义如下:DATA SEGMENTORG 100HBUF DW 'CD',1,3 DUP(4,2 DUP(8,6))VRA DB 4AHDATA ENDS单独执行下列语句LEA BX,BUF BX=_______MOV CX,VRA-BUF CX=_______(用十六进制数表示)。
第五章循环与分支程序设计5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字母。
5.3 编写程序,将—个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。
5.4 有个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
5.5 在STRING到STRING十99单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字,如有则把CL的第5位置1,否则将该位置0。
5.6 试编写一程序,要求比较数组ARRAY中的三个]6位补码数.并根据比较结果在终端上显示如下信息:(1)如果三个数都不相等则显示0;(2)如果二个数有二个相等则显示1;(3)如果二个敬都相等刚显示2。
第六章子程序结构6.1设有10个学土的成绩分别是76、69、81,90、73、88、99、68、100、80分,试编一子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数,并分别存放到S6,S7,S8,S9,S10单元中。
6.2 写—段子程序SKIPLINE。
完成输出空行的功能。
空出的行数在AX寄存器中。
6.3 编写一个有主程序和子程序的程序模块,子程序的参数是一个N字节数组的首地址TABLE、数N以及字符CHAR。
要求在N字节数组中查找字符CHAR,并记录该字符出现的次数。
主程序则要求从键盘接受一串字符以建立字节数组TABLE,并逐个显示从键盘键入的每个字符CHAR以及它在TABLE数组中出现的次数。
(为简单起见,假设出现的次数≤15,可以用十六进制形式把它显示出来。
)6.4 给定一个正数N>1存放在NUM单元中。
试编写一段递归子程序FIB(N), 并将结果存入RESULT单元中。
FIB 函数定义如下:FIB(1)=1FIB(2)=1FIB(n)= FIB(n-1)+ FIB(n-2)n>2第七章高级汇编语言技术7.1 定义宏指令MOVE,使它能将N个字符从一个字符区传送到另一个字符区。
7.2 编写一条宏指令CLRB:完成用空格符将一字符区中的字符清除的工作。
字符区首地址及其长度为变元。
7.3 编写宏指令DISPLA Y:能显示已存放在数据区的信息MESSAGE7.4 试编写一段程序完成以下功能:如给定名为x的字符串长度大干5时,下列指令将汇编10次:ADD AX,AX7.5 建立一个你自己的宏库MYLIB.LIB,其中包括宏指令CLS(清屏),LOCA TE(光标定位),DISPLAY(显示信息),MOVE(字符传送)和STARTER(段寄存器初始化),并编一个小程序使用你的宏库。
第八章输入输出程序设计8.1 写出指令将一个字节输出到端口25H。
写出指令将一个字从端口1000H输入。
8.2 用CALL指令来模拟实现INT 21H 现实字符T 的功能8.3 试编写一段程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1。
则与其相应的设备就输入—个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程就结束。
两个状态寄存器的端口地址分别是0024H和0036H,与其相应的数据输入寄存器的端口为0026H和0038H,输入字符分别存入首地址为BUFFl和BUFF2的存储区中。
8.4类型14H的中断向量在存储器的哪些单元里?8.5 假设外部设备中有一台硬币兑换器,其状态寄存器的端口地址为0006,数据输入寄存器的端口地址为0005,数据输出奇存器的端口地址为0007。
试用查询方式编制一程序,该程序作空闲循环等待纸币输入,当状态寄存器的第2位为1时表示有纸币输入,此时可从数据输入寄存器输入的代码中测出纸币品种,一角纸币的代码为01,二角纸币为02,五角纸币则为03,然后程序在状态寄存器的第3位变成1后,把应兑换的5分硬币数(用16进制表示)从数据输出奇存器输出。