汇编语言程序设计习题解答
- 格式:doc
- 大小:171.50 KB
- 文档页数:21
汇编语言程序设计第四版【课后习题答案】第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 )。
《汇编语言程序设计》(宋人杰主编)课后习题解答第1章汇编语言基础知识1.简述汇编语言源程序、汇编程序、和目标程序的关系。
答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。
2. 简述汇编语言的优缺点。
答:(1) 汇编语言的优点:①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
.②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
③可与高级语言配合使用,应用十分广泛。
(2) 汇编语言的缺点:①通用性和可移植性较差②相对于高级语言来说较繁锁、易出错、不够直观。
3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少?答:134. 1KB的存储器有多少个存储单元?答:1024个字节。
5. 指令中的逻辑地址由哪两部分组成?答:指令中的逻辑地址由段基址和偏移量组成。
6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。
(1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF答: (1) 13080H(2) 1A3F3H(3) 1A3F3H(4) 245EFH7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 1301,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。
答:字节型数据:11H字型数据:0A311H双字型数据:0113A311H8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若段内偏移地址为2228H,则段基地址为多少?答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH9. 在实模式环境中,一个段最长不能超过多少字节?答:64KB10. 实模式可寻址的内存范围是多少?答:1MB第2章 汇编语言源程序格式1.请解释变量和标号的含义,两者有何区别?答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。
汇编语言程序设计(第二版)课后习题答案第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答:30022H字节单元内容:ABH30024H字节单元内容:EFH30021H字单元内容:AB34H30022H字单元内容:CDABH4.解答:这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址5.解答:CS+IP第一个字的物理地址为:0AAA40H6.解答:条件标志OF,SF,ZF,CF,的值依次为:0,0,0,07.下列操作可使用那些寄存器?(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH,AL等(2)循环计数CX(3)乘法和除法DX,AX,AH,AL(4)保存段地址CS,DS,ES,SS(5)表示运算结果为O FLAGS(6)将要执行的指令地址IP(7)将要从堆栈取出数据的地址BP,SP,SS8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP9.一一对应;5--A4--B2--C3--D12--E9--F11--G10--H13--I8--J7--K6---L1--M15--N14--O第三章1.(1)立即寻址没有(2)直接寻址7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.根据下列要求,写出相应的汇编指令。
(1)ADD DX,BX(2)ADD AL,[BX][SI](3)ADD[BX][0B2H],CX(4)MOV AX,2A59H ADD[0524H],AX(5)ADD AL,0B5H3.(1)寄存器间接寻址MOV BX,OFFSET[BLOCK][0AH]MOV DX,[BX](2)寄存器相对寻址MOV SI,OAHMOV DX,[BLOCK][SI](3)基址变址寻址MOV BX,BLOCKMOV SI,OAHMOV DX,[BX][SI]4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(2 1200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。
第四章汇编语言程序设计习题答案一、单项选择题1.C2.B3.C4.C5.C6.A7.A8.C9.B10. D11.B12.B13.D14.C15.C16.A17.D18.D19.A20. C21.B22.D23.D24. A二、多项选择题1.ABCEF2.ACE3.AC4.ABCD三、填空题1.PARA2.1,2,60,120, 13.SEGMENT,ENDS4.12005.段内转移,段间转移6.AH7.过程,PROC,RET,NEAR,FAR8.LEA BX,BUF9.1, 410..0504H11.ASM,EXE12.立即寻址,直接寻址四、判断题××××V V V××V五、程序分析题1. 32.12H,3412H3.46H,73H4.(1) 从目的串中查找是否包含字符‘0’,若找到则停止,否则继续重复搜索。
(2) ZF=1, 说明已找到字符ZF=0, 说明未找到字符CX 0,说明中途已找到字符退出CX=0,且ZF=0说明串中无字符‘0’5.1, 0, 3, 2, 5, 4, 7, 6, 9, 86.87H,81H7.44AAH,44D5H8.DEC CX,JNC,JZ9.JNZ L210.ADC DX,0,CLC11.AAS12.STOSB13.1,3,1,2, 214.(2000H)=39H (2001H)=00H将(2000H),(2001H)两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,并存入(2000H)单元,0 (2001H)15.A)2345H,6780HB)将DX、AX中存放的32位二进制数向左移动4位16.0 ,1009H0对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,0共九个17.20H,10,T18.①$-BUF②ASSUME CS:CODE,DS:DATA③MOV DS,AXMOV AX,0⑤JLE NEXT⑥JNZ NEXT⑦JNZ LOPA⑧BEGIN19.不相同,第一个数据段72H在前,04在后,后一个04H在前,72H在后。
汇编语言程序设计习题及参考答案习题一1.1把下列2、8、16进制数转换成为十进制数(1)(1011011)2(2)(0.10110)2(3)(111111.01)2(4)(1000001.11)2(5)(377)8(6)(0.24)8(7)(3FF)16(8)(2A.4)16解:(1)(1011011)2=64+16+8+2+1=91另解:原式=(5B)16=5×16+11=91(2)(0.10110)2=0.5+0.125+0.0625=0.6875(3)(111111.01)2=32+16+8+4+2+1+0.25=63.25另解:原式=(1000000-1+0.01)2=64-1+0.25=63.25(4)(1000001.11)2=64+1+0.5+0.25=65.75(5)(377)8=3×64+7×8+7=255另解:原式=(400-1)8=4×64-1=255(6)(0.24)8=2×0.125+4×0.015625=0.3125(7)(3FF)16=3×256+15×16+15=1023另解:原式=(400-1)16=4×256-1=1023(8)(2A.4)16=2×16+10+4×0.0625=42.25另解:原式=2×16+10+4÷16=42.251.2 把下列十进制数转换为2、16进制数(1)(127)10(2)(33)10(3)(0.3)10(4)(0.625)10(5)(1023.5)10(6)(377)10(7)(1/1024)10(8)(377/32)10解:(1)(127)10 =64+32+16+8+4+2+1= (111 1111)2=(7F)16另解:原式=(128-1)10=(1000 0000-1)2=(111 1111)2=(7F)16(2)(33)10=32+1= (10 0001)2=(21)16(3)(0.3)10 = (0.0100 1100 1……)2=(0.4CCC……)16(4)(0.625)10= 0.5+0.125=(0.101)2=(0.A)16(5)(1023.5)10 = 512+256+128+64+32+16+8+4+2+1+0.5=(11 1111 1111.1)2=(3FF.8)16(6)(377)10 =256+64+32+16+8+1=(1 0111 1001)2=(179)16(7)(1/1024)10=(0.0000 0000 01)2=(0.004)16(8)(377/32)10=(256+64+32+16+8+1)÷(32)= (101111001)2÷(100000)2=(1011.11001)2=(0B.C1)161.3 把下列二进制数转换为十六进制数(1)(100011)2(2)(0.11101)2(3)(11111.11)2(4)(0.00101)2解:(1)(100011)2=(10‟0011)2=23H(2)(0.11101)2=(0.1110‟1000)2=0.E8H(3)(11111.11)2=(1‟1111.1100)2=1F.CH(4)(0.00101)2=(0.0010‟1000)2=0.28H1.4 把下列十六进制数转换为二进制数(1)(3B6)16(2)(100)16(3)(80.2)16(4)(2FF.A)16解:(1)(3B6)16=(0011 1011 0110)2(2)(100)16=(0001 0000 0000)2(3)(80.2)16=(1000 0000.0010)2(4)(2FF.A)16 =(0010 1111 1111.1010)21.5 如果用24b储存一个无符号数,这个数的范围是什么?如果储存的是一个补码表示的有符号数,那么这个数的范围又是什么?答:如果用24b储存一个无符号数,这个数的范围应为:0~224-1如果用24b储存一个补码表示的有符号数,这个数的范围应为:-223~+223-11.6 两个无符号数,它们的大小等于十进制数210和303,用N位二进制存储时,相加产生了进位,用N+1位二进制存储时,相加没有产生进位。
汇编语言程序设计课后习题答案(第二版_沈美明)(无删减)第一章1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=2551.3 将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=46601.4 完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2)1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=2178931.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
第一章微型计算机系统概述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.指出下列指令的错误:(1)MOV AH,BX(2)MOV [BX],[SI](3)MOV AX,[SI][DI](4)MOV MYDAT[BX][SI],ES:AX(5)MOV BYTE PTR[BX],1000(6)MOV BX,OFFSET MYDAT[SI](7)MOV CS,AX答:(1)MOV AH,BX AH 为八位,BX为16位(2)MOV [BX],[SI] 两个操作数不能都是存储单元(3)MOV AX,[SI][DI] 一个操作数中不能用两个变址寄存器(4)MOV MYDAT [BX][SI],E8:AX ESES 后应为一个变址寄存器,表示偏移量(5)MOV BYTE PTR[BX],1000BYTE 说明时BX进行字节操作。
而1000为字(6)MOV BX,OFFSET MYDAT [SI]OFFSET 为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。
(7)MOV 是数据寻址,不应用程序段寄存器CS.2.下面哪些指令是非法的?(假设OPl,OP2是已经用DB定义的变量)(1)CMP l5,BX(2)CMP OPl,25(3)CMP OPl,OP2(4)CMP AX,OPl答:(1) CMP 15,BX非法,两个操作数不能一个为字,一个为字节(2)CMP OP1,25 正确(3)CMP OP1,OP2 正确(4)CMP AX,OP1非法,两操作数不能一个为字,一个为字节3.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?(1)MOV BP,AL(2)MOV WORD_OP[BX+4*3][DI],SP(3)MOV WORD_OPl,WORD_OP2(4)MOV AX,WORD_OPl[DX](5)MOV SAVE_WORD,DS(6)MOV SP,SS:DATA_WORD[BX][SI](7)MOV [BX][SI],2(8)MOV AX,WORD_ OPl+WORD_OP2(9)MOV AX,WORD_ OPl-WORD_OP2+100(10)MOV WORD_ OPl,WORD_ OPl-WORD_OP2答:(1)MOV BP,AL非法,BP为16位 AL为八位(2)MOV WORD_OP[BX+4*3][DI] ,SP正确(3)MOV WORD_OP1 ,WORD_OP2非法,两个操作数不能都是变量(4)MOV AX , WORD_OP1[DX]非法,[DX]应改为[BX],[BP],[SI]或[DI],则为寄存器相对寻址。
(5)MOV SAVE_WORD ,DS非法,未指明数据段地址DS的偏移量(6)MOV SP,SS:DATA_WORD[BX][SI]非法,SS与[BX],[SI]不匹配,SS的偏移量用SP(7)MOV [BX][SI] ,2正确(8) MOV AX,WORD_OP1+WORD_OP2 正确(9) MOV AX, WORD_OP1—WORD_OP2+100 正确(10)MOV WORD_OP1,WORD_OP1—WORD_OP2非法4.假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1)ADD VAR1,VAR2(2)SUB AL,VAR1(3)JMP LAB[SI](4)JNZ VARl(5)JMP NEAR LAB答:(1) ADD VAR1,VAR2ADD指令中,目的操作数必须是寄存器或存储单元。
(2)SUB AL,VAR1AL为8位的,而VAR为字变量16位(3)JMP LAB [SI]格式不对,LAB处应为一偏移量,而不是标号。
(4)JNZ VAR1JNZ 为非零转移,应转移到某个程序段,故后面应为一个标号。
(5)JMP NEAR LAB段内直接转移,格式应为 JMP NEAR PTR LAB5.画图说明下列语句所分配的存储空间及初始化的数据值。
BYTE-VAR DB ‘BYTE’,12,-12H,3DUP(0,?,2DUP(1,2),?)WORD-VAR DW 5DUP(0,1,2),?,-5,’BY’,’TE’, 256H解答:(1)BYTE-VAR (2)WORD-VARBYTE12-12H6.试列出各种方法,使汇编程序把5150H 存入一个存储器字中。
解答:(1) DW 5150H ;(2)DB 50H ,51H ;(3)DB ‘PQ ’7.请设置一个数据段DATASG ,其中定义以下字符变量或数据变量。
FLD1B 为字符串变量:‘personal computer ’;FLD2B 为十进制数字节变量:32;FLD3B 为十六进制数字节变量:20;FLD4B 为二进制数字节变量:01011001;FLD5B 为数字的ASCII 字符字节变量:32654;FLD6B 为10个零的字节变量;FLD7B 为零件名(ASCII 码)及其数量(十进制数)的表格:PART1 20PART2 50PART3 14FLD1W 为十六进制数字变量:FFF0;FLD2W 为二进制数字变量:01011001;FLD3W 为(7)中零件表的地址变量;FLD4W为包括5个十进制数的字变量:5,6,7,8,9;FLD5W为5个零的字变量;FLD6W为本段中字数据变量和字节数据变量之间的地址差。
解答: DATASG SEGMENTFLD1B DB ‘personal computer’FLD2B DB 32DFLD3B DB 14HFLD4B DB 01011001BFLD5B DB 32654FLD6B DB 10DUP(0)FLD7B DB ‘PART1’,20D,‘PART2’,50D,‘PART3’,14DFLD1W DW 0FFFOHFLD2W DW 01011001BFLD3W DW [FLD7B]FLD4W DW 5,6,7,8,9FLD5W DW 5DUP(0)FLD6W DW FLD1W-FLD1BDATASG ENDS8.假设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PARTNIO问PLENTH的值为多少?它表示什么意义?解答:PLENTH代表着PARTNO至PLENTH的地址差,也即三段数据的字节数PLENTH=22。
9.有符号定义语句如下:BUFF DB 1,2,3,‘123’EBUFF DB 0L EQU EBUFF-BUFF问L的值为多少?解答:L=610.假设程序中的数据定义如下:LNAME DB 30 DUP(?)ADDRESS DB 30 DUP(?)CITY DB 15 DUP(?)CODE-LIST DB 1,7,8,3,2(1)用一条MOVE指令将LNAME的偏移地址放入AX。
(2)用一条指令将CODE-LIST的头两个字节的内容放入SI。
(3)写一条伪操作使CODE-LENGTH的值等于CODE-LIST域的实际长度。
解答:(1)MOVE AX,0FFSET LNAME;(2)MOVE SI,0701H;(3)DE-LENGTH EQU LENGTH CODE-LIST。
11.试写出一个完整的数据段DATA_SEG,它把整数5赋与一个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的头5个单元中。
然后写出完整的代码段,其功能为:把DATA-_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。
解答:DATA_SEG SEGMENTLENGTH DB 5DATA_LIST DW –1,0,2,5,4,5DUP(?)MAX DW ?MIN DW ?DATA_SEG ENDSCODE_SEG SEGMENTASSUME CS:CODE_SEG,DS:DATA_SEGSTART:MOV AX,DATA_SEGMOV DS,AXMOV SI,OFFSET DATA_LISTMOV AX,[SI]MOV BX,[SI]MOV CX,LENGTHXOR AX,AXXOR BX,BXCLCAGAIN:CMP AX,[SI]JG NEXT1MOV AX,[SI]NEXT1:CMP BX,[SI]JNG NEXT2MOV BX,[SI]NEXT2:JNZ AGAINMOV MAX,AXMOV MIN,BXCODE ENDSEND START12.给出等值语句如下:ALPHA EQU 100BETA EQU 25GAMMA EQU 2下列表达式的值是多少?(1)ALPHA*100+BETA(2)ALPHA MOD GAMMA+BETA(3)(ALPHA+2)*BETA-2(4)(BETA/3)MOD5(5)(ALPHA+3)*(BETA MOD GAMMA)(6)ALPHA GE GAMMA(7)BETA AND 7(8)GAMMA OR 3解答:(1)=10025;(2)=19;(3)=2548;(4)=3;(5)=103;(6)=0;(7)=01H;(8)=03H。
13.对于下面的数据定义,三条指令分别汇编成什么?TABLEA DW 10 DUP(?)TABLEB DB 10 DUP(?)TABLEC DB ‘1234’┊┊MOVE AX,LENGTH TABLEAMOVE BL,LENGTH TABLEBMOVE CL,LENGTH TABLEC解答:MOVE AX,10MOVE BL,10MOVE CL,114.对于下面的数据定义,各条MOVE指令单独执行后,有关寄存器的内容是什么?FLDB DBTABLEA DW 20DUP(?)TABLEB DB ‘ABCD’MOVE AX,TYPE FLDBMOVE AX,TYPE TABLEAMOVE CX,LENGTH TABLEAMOVE DX,SIZE TABLEAMOVE CX,LENGTH TABLEB解答:AX=0001HAX=0002HCX=0014HDX=0028HCX=0001H。
15.指出下列伪操作表达方式的错误,并改正之。
(1)DATA_SEG SEG(2)SEGMENT ‘CODE’(3)MYDATA SEGMENT/DATA┆ENDS(4)MAIN_PROC PROC FAR┆END MAIN_PROCMAIN_PROC ENDP答:(1) DATA-SEG SEGMENT(2) CODE SEGMENT PARA 'CODE'(3) /DATA错。
定义数据段应在代码段中用ASSUME。
ENDS缺少‘MYDATA’。
(4) 多余END,MAIN-PROC应删除。