接口与汇编程序设计作业答案
- 格式:doc
- 大小:169.00 KB
- 文档页数:17
汇编语言程序设计题目以及答案[P1] 汇编语言程序设计题目以及答案汇编语言是一种底层计算机语言,它直接使用机器指令来编写程序。
本文将介绍一些汇编语言程序设计的题目,并提供相应的答案。
通过这些题目和答案的学习,读者可以更好地理解和掌握汇编语言程序设计的基本概念和技巧。
[题目一] 计算两个数的和要求:编写汇编程序,计算两个给定的整数的和,并将结果存储在指定的内存位置中。
答案:```assemblysection .datanum1 dd 10 ; 第一个整数num2 dd 20 ; 第二个整数result dd 0 ; 结果section .textglobal _start_start:mov eax, [num1] ; 将num1值存入寄存器eaxadd eax, [num2] ; 将num2值与eax寄存器中的值相加mov [result], eax ; 将结果存储到result变量mov eax, 1 ; 准备执行系统调用mov ebx, 1 ; 文件描述符:标准输出mov ecx, result ; 输出的数据mov edx, 4 ; 数据长度int 0x80 ; 执行系统调用mov eax, 1 ; 准备执行系统调用xor ebx, ebx ; 正常退出int 0x80 ; 执行系统调用```[题目二] 字符串反转要求:编写汇编程序,将一个给定的字符串反转,并将结果存储在指定的内存位置中。
答案:```assemblysection .datastr db 'Hello', 0 ; 待反转的字符串section .bssreverse resb 6 ; 存储反转后的字符串section .textglobal _start_start:mov esi, str ; esi指向待反转的字符串mov edi, reverse ; edi指向存储反转结果的位置 mov ecx, 5 ; 字符串长度为5mov ebx, 1 ; ebx用于计数reverse_loop:mov al, [esi+ebx]mov [edi-ebx+5], alinc ebxloop reverse_loopmov byte [edi+5], 0 ; 在末尾添加字符串结束符 mov eax, 4 ; 准备执行系统调用mov ebx, 1 ; 文件描述符:标准输出mov ecx, reverse ; 输出的数据mov edx, 6 ; 数据长度int 0x80 ; 执行系统调用mov eax, 1 ; 准备执行系统调用xor ebx, ebx ; 正常退出int 0x80 ; 执行系统调用```[题目三] 求平均数要求:编写汇编程序,计算给定的一组整数的平均数,并将结果存储在指定的内存位置中。
汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介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. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。
汇编语⾔程序设计习题-答案4.1 分析执⾏下列指令序列后的结果:1)MOV AX,1234HMOV BX,00FFHAND AX,BX【答】(AX)=0034H2)MOV AL,01010101BAND AL,00011111B ;(AL)=00010101BOR AL,11000000B ;(AL)=11010101BXOR AL,00001111B ;(AL)=11011010BNOT AL【答】(AL)=00100101B3)MOV DL,05HMOV AX,0A00HMOV DS,AXMOV SI,0HMOV CX,0FHAGAIN: INC SICMP [SI],DLLOOPNE A GAINHLT本程序实现了什么功能?【答】在以0A001H开始的15个单元中查找05H。
4)MOV AX,DSEGADDRMOV DS, AXMOV ES,AXMOV SI, OFFSET B1ADDRMOV DI,OFFSET B2ADDRMOV CX,NCLDREP MOVSBHLT本程序实现了什么功能?MOV DS,AXMOV ES, AXMOV AL,05HMOV DI,0A000HMOV CX,0FHCLDAGAIN: SCASBLOOPNE AGAINHLT本程序实现了什么功能?【答】从地址0A000H开始的15个单元中查找字节型数据05H,⽤条件循环LOOPNZ,控制数据05H的查找。
4.2 阅读程序:1). CLDLEA DI,[0100H]MOV CX, 0080HXOR AX, AXREP STOSW本程序实现了什么功能?【答】将DS中起始地址为0100H的128个字节单元清零。
2). MOV AL, 08HSAL AL,01H ;(AL)=00010000HMOV BL, ALMOV CL ,02HSAL AL,CL ;(AL)=01000000HADD AL,BL ;(AL)=01010000H本程序实现了什么功能?【答】将AL中的内容乘以10。
汇编语言程序设计习题解答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],则为寄存器相对寻址。
汇编语言程序设计课后答案第二章(更新完毕~)1。
在80X86微机的输入输出指令中,I/O端口号通常是由DX寄存器提供的,但是有时也可以在指令中直接指定00---FFH的端口号。
试问,可直接由指令指定的I/0端口数~解答:有256个~~ 书上有原话~~可以找到~~2。
有两个16位字节1EE5H和2A3CH分别存放在80X86微机的存储器的000B0H 和000B3H单元中,请用图表示出它们在存储器里的存放情况。
解答:如下图.第一个络子为000B0H字单元,注意,是字单元~~第五个格子为000B3H字单元~,学计算机的,竟然连个表格也做不好!3. 图在书上,我就不画了,太麻烦~~直接答吧~解答: 30022H字节单元内容: ABH 30024H字节单元内容: EFH 30021H字单元内容: AB34H 30022H字单元内容: 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--A 4--B 2--C 3--D 12--E 9--F 11--G 10--H 13--I 8--J 7--K 6---L 1--M 15--N 14--O第三章1。
《16/32位微机原理、汇编语言及接口技术教程》作业和习题解答第1章微型计算机系统概述(习题1)1.7简答如下概念:⏹所谓系统ROM-BIOS指的是什么?它的主要功能是什么?解答:⏹BIOS:基本输入输出系统(Basic Input/Output System)。
可视为一个永久记录在ROM的软件,是操作系统的一部分。
主要负责机器的启动和系统中重要硬件的控制及驱动并为高层软件和用户提供基层调用。
它包括自诊断程序、系统自举装载程序、CMOS设置程序和主要I/O设备的驱动程序及中断服务。
⏹主要功能:用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备第2章微处理器指令系统(习题2)2.8问题:⏹已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12H、34H、56H、78H,[21200H]~[21203H]依次存放2AH、4CH、B7H、65H,说明下列每条指令执行完后AX寄存器的内容,以及源操作数的寻址方式?解答:⑴mov ax,1200h ;AX=1200H,立即数寻址⑵mov ax,bx ;AX=0100H,寄存器寻址⑶mov ax,[1200h] ;AX=4C2AH,直接寻址⑷mov ax,[bx] ;AX=3412H,寄存器间接寻址⑸mov ax,[bx+1100h] ;AX=4C2AH,寄存器相对寻址⑹mov ax,[bx+si] ;AX=7856H,基址变址寻址⑺mov ax,[bx][si+1100h] ;AX=65B7H,相对基址变址寻址2.11问题:⏹给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:解答:mov al,89h ;AL=89H CF ZF SF OF PFadd al,al ;AL=12H 1 0 0 1 1add al,9dh ;AL=0AFH 0 0 1 0 1cmp al,0bch ;AL=0AFH 1 0 1 0 1sub al,al ;AL=00H 0 1 0 0 1dec al ;AL=0FFH 0 0 1 0 1inc al ;AL=00H 0 1 0 0 12.12问题:⏹请分别用一条汇编语言指令完成如下功能:解答:⑴把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器add dx,bx⑵用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中add al,[bx+si]⑶用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中add [bx+0b2h],cx⑷用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中add word ptr [0520h],3412h⑸把数0A0H与AL寄存器的内容相加,并把结果送回AL中add al,0a0h2.13运算公式是:(V-(Z+X×Y-540))/X 商存于AX中,余数存于DX中。
汇编语言程序设计习题及答案汇编语言程序设计习题及答案汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。
虽然在现代计算机编程中,高级语言如C、Java等更为常见,但了解汇编语言的基本原理和编程技巧对于理解计算机底层工作原理和进行性能优化非常重要。
本文将介绍一些汇编语言程序设计的习题及其答案,帮助读者巩固和提升汇编语言编程能力。
一、基础习题1. 编写一个汇编程序,将存储器中的某个字节的值加1,并将结果存回原位置。
答案:```assemblyMOV AL, [地址]INC ALMOV [地址], AL```2. 编写一个汇编程序,计算存储器中一个数组的和,并将结果存放在指定的寄存器中。
答案:```assemblyMOV CX, 数组长度MOV BX, 数组首地址MOV AX, 0LOOP_START:ADD AX, [BX]ADD BX, 2LOOP LOOP_START```二、进阶习题1. 编写一个汇编程序,实现字符串的逆序输出。
答案:```assemblyMOV SI, 字符串首地址MOV DI, 字符串尾地址MOV CX, 字符串长度DEC CXREVERSE:MOV AL, [SI]MOV AH, [DI]MOV [DI], ALMOV [SI], AHINC SIDEC DILOOP REVERSE```2. 编写一个汇编程序,实现两个16位无符号整数的相乘,并将结果存放在指定的寄存器中。
答案:```assemblyMOV AX, 第一个数MOV BX, 第二个数MUL BX```三、挑战习题1. 编写一个汇编程序,实现一个简单的计算器,支持加法、减法、乘法和除法运算。
答案:```assemblyREAD_INPUT:; 读取用户输入; ...PARSE_INPUT:; 解析用户输入,获取操作数和运算符; ...CALCULATE:; 根据运算符进行相应的计算; ...DISPLAY_RESULT:; 将计算结果显示给用户; ...LOOP:; 循环执行计算器程序; ...```2. 编写一个汇编程序,实现一个简单的迷宫游戏,玩家通过键盘控制角色在迷宫中移动,并找到出口。
第二章2.5 1M=220 因为最小的一个段的大小为16个字节(一个小段),所以最多有220/24=216(1) 0FFFFH:0 物理地址为 0FFFF0H(2) 40H:17H 物理地址为 400H+17H=417H(3) 2000H:4500H 物理地址为200000H+4500H=24500H(4) 0B821H:4567H 物理地址为 0B8210H+4567H=0BC777H2.9 (1) CX 16位 DL 8位 操作数宽度不一样(类型不一致)(2) IP 不能作为源操作数,也不能作为目的操作数(3) 立即数不能直接赋给段寄存器(4)段寄存器间不能直接赋值(5) 类型不一致,立即数300超过8位,不能赋给8位寄存器AL(6) 寄存器间接寻址方式不能使用sp 寄存器(7)+作为算术运算符,它的操作数为常量(8)20h 为立即数不能作为目的操作数2.12 (1) ADD DX, BX(2) ADD AL,BYTE PTR [BX+SI] 或ADD AL,BYTE PTR [BX][SI](3) ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H21203h 20100h 20101h 20102h 20103h 21201h 21201h 21202h2.16(1)1256H (2)20A1H+1256H+20000H=232F7H又[232F7H]=3280H所以EA=3280H 2.17(1)当AX=1E1EH时(2)当AX的D7和D0位不同时为0时(3)无符号数cx<64H时3.9 (1) 67h (2) 133h (3) 230h (4)41h (5)7654H3.11(1) my1b db 'Personal Computer'(2) my2b db 20(3) my3b db 14h(4)my4b db 00010100B(5) my5w dw 20 dup (?)(6) my6c equ 100(7)my7c = 'Personal Computer'3.14109h 10ah 113h114h100hAX=114HAX=6AX=13HAX=03H第9章9.36 低计数初值装入减一计数器clk 计数器计数器减为0时高 5 方式39.4(1)MOV DX, 207HMOV AL , 01010000BOUT DX, ALMOV DX, 205HMOV AL , 128OUT DX, AL(2)MOV DX, 207HMOV AL , 00110011BOUT DX, ALMOV DX, 204HMOV AX , 3000HOUT DX, ALMOV AL, AHOUT DX, AL(3)MOV DX , 207HMOV AL , 10110101BOUT DX, ALMOV DX, 206HMOV AX, 02F0HOUT DX, ALMOV AL, AHOUT DX, AL。
《汇编语言程序设计》考试练习题及答案一、单选题1. 计算机中存取信息或数据的最小单位为()A 、位B 、字节C 、字D 、双字答案:B2. 调用子程序的指令为()A 、CALLB 、RETC 、HLTD 、NOP答案:A3. DOS功能调用是通过()指令去调用DOS系统提供的软件中断处理程序A 、INT 21HB 、INT 23HC 、INT 12HD 、INT 11H答案:A4. 满足()时,CPU允许中断A 、IF=0B 、IF=1C 、DF=0D 、DF=1答案:B5. 完成对CL寄存器的内容乘以4的正确操作是()。
A 、ROL CL,1 ROL CL, 1B 、MUL 4C 、SHL CL, 1 SHL CL, 1D 、MOV CL , 2 SHL CL, CL答案:C6. 下面寄存器中可以分为两个独立8位寄存器的是()A 、AXB 、DIC 、CSD 、SI答案:A7. ()是用二进制编码的机器指令的集合及一组使用机器指令的规则,是CPU能直接识别的唯一语言。
A 、汇编语言B 、机器语言C 、JAVA语言D 、C语言答案:B8. 源程序模块结束语句为()A 、ORGB 、ENDC 、SEGMENTD 、START答案:B9. 8位补码表示的有符号数的表示范围是()A 、0~255B 、-128~+127C 、0~65535D 、-32768~+32767答案:B10. 在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来,下列说法正确的是()A 、占内存空间小,但速度慢B 、占内存空间大,但速度快C 、占内存空间相同,但速度快D 、占内存空间相同,但速度慢答案:B11. 与LEABX ,BUF指令完全等效的指令是()。
A 、MOV BX ,BUFB 、LDS BX ,BUFC 、MOV BX ,OFFSET BUFD 、MOV BX ,WORD PTR BUF答案:C12. 14的非压缩BCD码为()A 、00010100B 、01000001C 、0000000000010100D 、0000000100000100答案:D13. 要实现使BETA的值为56,应采用的语句是()A 、BETA DB 56B 、BETA DB 56HC 、BETA EQU 56HD 、BETA EQU 56答案:D14. ()不可以做目的操作数A 、立即数B 、寄存器C 、存储器操作数D 、累加器答案:A15. 计算机一般由中央处理器、存储器和输入/输出子系统组成,其中()可以存放程序、数据、信息及中间结果。
习题一解答:1.3(1)[0.0000]原=0.0000 [0.0000]反=0.0000 [0.0000]补=0.0000(2)[0.1001]原=0.1001 [0.1001]反=0.1001 [0.1001]补=0.1001(3)[-1001]原=11001 [-1001]反=10110 [-1001]补=101111.4[N]反=1.0101 [N]原=1.1010 [N]补=1.0110 N=-0.10101.5(1)原码运算:比较可知,正数较大,用正数减负数,结果为正反码运算:01010011-00110011=[01010011]反+[-00110011]反=001010011 +[100110011]反=001010011+111001100=000100000补码运算:01010011-00110011=[01010011]补+[-00110011]补=001010011 +[100110011]补=001010011+111001101=000100000(2)原码运算:比较可知,负数较大,用负数减正数,结果为负反码运算:0.100100-0.110010=0.100100+[1.110010]反=0.100100+1.001101=1.110001补码运算:0.100100-0.110010=0.100100+[1.110010]补=0.100100+1.001110=1.1100101.6(1) (11011011)2=(219)10=(001000011001)BCD(2) (456)10=(010*********)BCD(3) (174)8=(124)10=(000100100100)BCD(4) (2DA)16=(730)10=(011100110000)BCD1.7(1)9876H看成有符号数时,默认为负数的补码,转换为十进制数是:-26506(2)9876H看成无符号数时,转换为十进制数是:390301.8(1)98的压缩BCD码为:10011000B(2)98的非压缩BCD码为:0000100100001000B1.9(1)[S1+S2]补=[S1]补+[S2]补=00010110+00100001=00110111,无溢出[S1-S2]补=[S1]补+[-S2]补=00010110+11011111=11110101,无溢出(2)[S1+S2]补=[S1]补+[S2]补=00010110+11011111=11110101,无溢出[S1-S2]补=[S1]补+[-S2]补=00010110+00100001=00110111,无溢出(3)[S1+S2]补=[S1]补+[S2]补=01100100+00011110=10000010,有溢出[S1-S2]补=[S1]补+[-S2]补=01100100+11100010=01000110,无溢出(4)[S1+S2]补=[S1]补+[S2]补=10011100+11100010=01111110,有溢出[S1-S2]补=[S1]补+[-S2]补=10011100+00011110=10111010,无溢出习题二解答:2.1答:8086有哪些寄存器组?各有什么用途?①通用寄存器AX、BX、CX、DX它既可用作16位寄存器,又可将它拆成高、低8位,分别作为两个独立的8位寄存器使用。
习题1(教材P56)1.8086/8088微处理器地址总线有多少位?寻址范围是多少?答:20位 A0-A19。
寻址范围00000H-FFFFFH2.8086/8088微处理器分哪两部分?各部分主要由什么组成?答:执行单元EU和总线接口单元BIU。
EU包括:ALU、寄存器组、暂存器、标志寄存器、EU控制单元。
BIU包括:指令队列缓冲器、段寄存器及指令指针、总线地址加法器、总线控制逻辑。
4.8086/8088微处理器中有几个通用寄存器?几个变址寄存器?有几个指针寄存器?几个段寄存器?答:8个通用寄存器AX、BX、CX、DX、SP、BP、SI、DI。
2个变址寄存器SI、DI。
2个指针寄存器SP、BP。
DS、ES、SS、CS段地址寄存器。
5.8086/8088微处理器中有哪些标志位?它们的含义和作用如何?答:零标志位ZF、进位标志CF、溢出标志位OF、辅助进位标志位AF、奇偶标志位PF、符号标志位SF、方向标志位DF、中断允许标志位IF、跟踪标志TF。
6.试求出下列运算后的各个状态标志,说明进位标志和溢出标志的区别?1278H+3469H答:0001 0010 0111 1000+0011 0100 0110 10010100 0110 1110 0001ZF=0;SF=0;CF=0;OF=0;AF=1;PF=1。
54E3H-27A0H答:0101 0100 1110 0011+1101 1000 0110 0000(-27A0的补码)10010 1101 0100 0011ZF=0;SF=0;CF=1;OF=0;AF=0;PF=0。
3881H+3597H答:0011 1000 1000 0001+0011 0101 1001 01110110 1110 0001 1000ZF=0;SF=0;CF=0;OF=0;AF=0;PF=1。
01E3H-01E3H答:0000 0001 1110 0011+1111 1110 0001 1101(-01E3H的补码)10000 0000 0000 0000ZF=1;SF=0;CF=1;OF=0;AF=1;PF=1。
进位表示最高位产生进位。
溢出表示超出数的表示范围。
OF=Cn ○﹢Cn-18.什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址:产生实际地址的两个地址分量:首地址和偏移地址。
物理地址:内存单元地址。
用户在编写程序时只使用逻辑地址。
程序装到内存中使用物理地址。
物理地址可以通过逻辑地址求得。
9.设现行数据段位于存储器的B0000H到BFFFFH存储单元,DS段寄存器内容为多少?答:DS=B000H11.8086/8088微处理器工作在最小模式和最大模式时的主要特点是什么?有何区别?答:最小模式只有一个CPU不需要总线控制器。
最大模式有多个微处理器,必须要总线控制器来对总线控制权进行分配。
引脚MN/MX=1工作在最小模式。
MN/MX=0工作在最大模式。
13.80486地址总线宽度为多少?数据总线宽度为多少?答:80486地址总线宽度为32位(分成4个块,每个块为8位字长,块有A1,A0选择)有数据总线宽度为32位。
14.现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H~400AAH,若当前的(DS)=4002H,请说明它们的偏移地址值。
如果从存储器中读出这些数据,至少需要访问几次存储器,各读出哪些数据?解:∵物理地址=(DS)×16+偏移地址,∴偏移地址=物理地址-(DS)×16=400A5H~400AAH-40020H=85H~8AH至少需要访问四次存储器,每次读出一个字,即11H,3322H,5544H,66H。
(注意由于8086CPU访问内存时如果按字存储采用的是偶对齐方式),这六个数在存储器中的存放位置如图所示。
4002:00854002:00864002:00874002:00884002:00894002:008A习题2(教材P105)1.已知DS=2000H,BX=0100H,SI=0002H,存储单元[20100H]~[20103H]依次存放12 24 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。
(1) MOV AX, 1200H解:AX=1200H(3) MOV AX, [1200H]解:物理地址=D S×16+1200H=20000H+1200H=21200H,所以AX=4C2AH(5) MOV AX, [BX+1100H]解:物理地址=D S×16+BX+1100H=20000H+0100H+1100H=21200H ,所以AX=4C2AH(7) MOV AX, [BX][SI+1100H]解:物理地址=D S×16+BX+SI+1100H=20000H+0100H+0002H+1100H=21202H ,所以AX=65B7H (2) MOV AX, BX解:AX=0100H(4) MOV AX, [BX]解:物理地址=D S×16+BX=20000H+0100H=20100H,所以AX=2412H(6) MOV AX,[BX][SI]解:物理地址=D S×16+BX+SI=20000H+0100H+0002H=20102H,所以AX=7856H2.指出下列指令错误(1) MOV CX, DL答:数据类型不匹配,CX是16位,DL是8位。
(2) MOV IP, AX答:指令指针不能直接修改。
(3) MOV ES, 1234H答:段地址寄存器不能直接置数。
(4) MOV ES, DS答:段地址DS不能做源操作数。
(5) MOV AL, 300答:300大于255,AL是8位的,最多只能存255(6) MOV [SP], AX答:SP不能做间接寻址寄存器。
(7) MOV AX , BX+DI答:基址变址寻址必须打[]。
(8) MOV 20H, AH答:立即数不能做目的地址单元。
3.已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存放在于以TABEL为首地址(设为200H)的连续区域中。
对如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。
LEA BX,TABLE ;取表的首地址送BX,执行后(BX)=200HMOV AL,8 ;立即数8送AL,执行后,(AL)=8XLAT ;查表,将表首地址+8((BX)+(AL))所对应单元内容送AL,;执行后,(AL)=12H(8所对应的格雷码)4.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令? 答:堆栈是在内存中开的一个特殊的数据区,堆顶有堆栈指针SP 与SS 共同决定。
原则是:先进后出,两个操作:入栈、出栈,对应指令:PUSH(入栈)、POP(出栈)。
5.已知SS=FFA0H ,SP=00B0H ,画图说明执行下列指令序列时,堆栈区和SP 的内容如何变化? MOV AX , 8075H PUSH AX MOV AX , 0F79H PUSH AXPOP BX POP [BX]解:8.请分别用一条汇编语言指令完成如下功能:(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器。
FFA0:00AE SP → FFA0:00AF FFA0:00B0FFA0:0000执行完MOV AX , 8075H PUSH AX 指令后SP=00AEHFFA0:00AC SP →FFA0:00AD FFA0:00AE FFA0:00AF FFA0:00B0FFA0:0000再执行完MOV AX , OF79H PUSH AX 指令后 SP=00ACHFFA0:00AE SP → FFA0:00AF FFA0:00B0FFA0:0000 再执行完POP BX 指令后SP=00AFHFFA0:00AE FFA0:00AFFFA0:00B0 SP →FFA0:0000再执行完POP [BX] 指令后 SP=00B0H解:ADD DX, BX(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送AL中。
解:ADD AL, [BX+SI] 或ADD AL, [BX][SI](3)用寄存器BX和02BH的寄存器相对寻址方式,把存储器的一个字和CX寄存器的内容相加,并把结果送回存储器中。
解:ADD [BX+02BH] ,CX 或ADD 02BH [BX] ,CX(4)把数0A0H与AL寄存器内容相加,并把结果送AL中。
解:ADD AL, 0A0H10.指出下列指令错误(1)XCHG [SI], 30H答:立即数不能作为单元地址来保存数据,所以交换指令中的两个操作数必须是地址操作数。
(2)POP CS答:CS不能作为寻址寄存器使用(3)SUB [SI], [DI]答:算术运算指令中的两个操作数不能同时都在内存中(4)PUSH AH答:PUSH指令中的操作数必须是16位操作数,AH是8位(5)ADC AX, DS答:DS不能做源操作数,(6)OUT DX, AH答:只能使用AL(当端口数据位是8位)或AX(端口数据位是16位)与端口交换数据(7)IN AL 3FCH答:端口地址大于255时,必须有DX寄存器间接寻址。
20.假设DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接转移指令后,转移的目的地址是什么?(1) JMP BX(2) JMP TABLE[BX](3) JMP [BX][SI]解:(1)JMP BX,目标地址的偏移量在BX中,所以转移的目的地址是CS:1256H(也可以直接写成有效地址IP=1256H)。
(2) JMP TABLE[BX],目标地址的偏移量在存储器单元中,该存储器单元有效地址为(BX)+ TABLE中,所对应的物理地址=DS×16+(BX)+TABLE=20000H+1256H+20A1H=232F7H,该单元存放的内容为3280H,所以JMP TABLE[BX] 转移的目的地址是CS:3280H(也可以直接写成有效地址IP=3280H)(3)JMP [BX][SI] 目标地址的偏移量在存储器单元中,该存储器单元有效地址为(BX)+ (SI)中,所对应的物理地址=DS×16+(BX)+(SI)=20000H+1256H+528FH=264E5H,该单元存放的内容为4500H,所以JMP TABLE[BX] 转移的目的地址是CS:4500H(可以直接写成有效地址IP=4500H)。