汇编习题课
- 格式:ppt
- 大小:197.01 KB
- 文档页数:19
汇编语言程序设计(第四版)第4章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。
〔解答〕思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。
传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成:.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov cx,7mov si,1again: mov al, byte ptr qvar[si]mov byte ptr qvar[si-1],alinc siloop againtest al,80hjz ezzmov bl,0ffhjmp doneezz: mov bl,0done: mov byte ptr qvar[7],bl.exit 0end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。
〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。
.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50inc siloop againdec dxjnz lpp.exit 0.end〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。
汇编语言程序设计第四版【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
第二章答案Tarzan 版题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些寄存器可作为存储器寻址方式的指针寄存器?答:8086/8088通用寄存器的通用性表现在:这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果;8个通用寄存器的专门用途如下:AX 字乘法,字除法,字I/OBX 存储器指针CX 串操作或循环控制中的计数器DX 字乘法,字除法,间接I/OSI 存储器指针(串操作中的源指针)DI 存储器指针(串操作中的目的指针)BP 存储器指针(存取堆栈的指针)SP 堆栈指针其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器?答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的内容:MOV AX,1234HMOV AL,98HMOV AH,76HADD AL,81HSUB AL,35HADD AL,AHADC AH,ALADD AX,0D2HSUB AX,0FFH答: MOV AX,1234H AX=1234HMOV AL,98H AX=1298HMOV AH,76H AX=7698HADD AL,81H AX=7619HSUB AL,35H AX=76E4HADD AL,AH AX=765AHADC AH,AL AX=D15AHADD AX,0D2H AX=D22CHSUB AX,0FFH AX=D12DH题2.4 8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?答: 8086/8088标志寄存器中定义了9个标志,如下:CF: Carry FlagZF: Zero FlagSF: Sign FlagOF: Overflow FlagPF: Parity FlagAF: Auxiliary Carry FlagDF: Direction FlagIF: Interrupt-enable FlagTF: Trap Flag这些标志可分为两类,分别为:1、运算结果标志;2、状态控制标志;采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;采用CLC可清除CF,置CF到0采用STC可置CF到1采用CLD可置DF到0采用sTD可置DF到1采用CLI可置IF到0采用STI可置IF到1另外,在某些指令执行过程中会改变部分标志的状态;题2.5 请说说标志CF和标志OF的差异。
练习一1.在计算机内部,计算机能够直接执行的程序语言是 CA.汇编语言B.C++语言 C.机器语言 D.高级语言2.在堆栈段中,存放栈顶地址的寄存器是 BA.IPB.SPC.BXD.BP3.指令指针寄存器IP用来存放代码段中的偏移地址,在程序运行的过程中,它始终指向AA.下一条指令的首地址 B.下一条指令的地址 C.当前指令的首地址 D.当前指令的地址4.编译程序的功能是 BA.检查源程序中的语法错误和逻辑错误B.将源程序编译成目标程序C.改正源程序中的语法错误D.将高级语言源程序翻译成汇编语言源程序5.用户为了解决自己的问题,用汇编语言所编写的程序,称为 BA.目标程序 B.源程序 C.可执行程序 D.汇编程序6.计算机中用来存储程序、数据等信息的记忆装置是 DA.控制器B.运算器C.CPUD.存储器7.在宏汇编中,源程序必须通过__编译__生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。
8.当SS=3000H,SP=0100H时,执行PUSH AX 指令后,堆栈顶部的物理地址是 DA.30100HB.30098HC.30102HD.300FEH9.设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是 CA.-82、-126、-2 B.-2、-125、126 C.-2、-126、-125 D.-82、-125、12510 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为__19__11.若物理地址为2D8C0H,偏移量为B6A0H,则段地址为 __2222H__12.设(AL)=70H,分析在SUB AL,9AH后,标志寄存器中CF、OF、ZF、PF、SF的状态.(CF)=1、(OF)=1、(ZF)=0、(PF)=0、(SF)=1练习二1. 8086在基址变址的寻址方式中,基址、变址寄存器分别是 BA.AX或CX、BX或CX B.BX或BP、SI或DIC.SI或BX、DX或DI D.CX或DI、CX或SI2. 设(SS)=338AH,(SP)=0450H,执行PUSH BX和PUSHF两条指令后,堆栈顶部的物理地址是 A A.33CECH B.33CF2H C.33CF4H D.33CE8H3.设(AX)=0C544H,在执行指令ADD AH,AL后,相应的状态为 CA.CF=0、OF=0 B.CF=0、OF=1C.CF=1、OF=0 D.CF=1、OF=14.设DS=2000H,SS=1500H,(ES)=3000H,(SI)=00B0H,(BX)=1000H,(BP)=0020H,指出下列指令的源操作数的寻址方式是什么?若该操作数为存储器操作数,请计算其物理地址。
补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。
assume cs:codecode segmentstart: mov ax,2000hmov ds,axmov bx,0s: mov ch,0mov cl,[bx]jcxz ok ;当cx=0时,CS:IP指向OKinc bxjmp short sok: mov dx,bxmov ax ,4c00hint 21hcode endsend start检测点9.3补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。
assume cs:codecode segmentstart: mov ax,2000hmov ds,axmov bx,0s:mov cl,[bx]mov ch,0inc cxinc bxloop sok:dec bxmov dx,bxmov ax,4c00hint 21hcode endsend start书P101,执行loop s时,首先要将(cx)减1。
“loop 标号”相当于dec cxif((cx)≠0) jmp short 标号检测点10.1补全程序,实现从内存1000:0000处开始执行指令。
assume cs:codestack segmentdb 16 dup (0)stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax, 1000hmov ax, 0push axretfcode endsend start执行reft指令时,相当于进行:pop ippop cs根据栈先进后出原则,应先将段地址cs入栈,再将偏移地址ip入栈。
检测点10.3下面的程序执行后,ax中的数值为多少?内存地址机器码汇编指令执行后情况1000:0 b8 00 00 mov ax,0 ax=0,ip指向1000:31000:3 9a 09 00 00 10 call far ptr s pop cs,pop ip,ip指向1000:91000:8 40 inc ax1000:9 58 s:pop ax ax=8hadd ax,ax ax=10hpop bx bx=1000hadd ax,bx ax=1010h用debug进行跟踪确认,“call far ptr s”是先将该指令后的第一个字节段地址cs=1000h入栈,再将偏移地址ip=8h入栈,最后转到标号处执行指令。
2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1)mov ax,1200h(2)mov ax,bx(3)mov ax,[1200h](4)mov ax,[bx](5)mov ax,[bx+1100h](6)mov ax,[bx+si](7)mov ax,[bx][si+1100h]〔解答〕(1)AX=1200H(2)AX=0100H(3)AX=4C2AH ;偏移地址=bx=0100h(4)AX=3412H ;偏移地址=bx=0100h(5)AX=4C2AH ;偏移地址=bx+1100h=1200h(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出下列指令的错误(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah〔解答〕(1)两操作数类型不匹配(2)IP指令指针禁止用户访问(3)立即数不允许传给段寄存器(4)段寄存器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为[ SI ](7)源操作数应为[BX+DI](8)立即数不能作目的操作数〔习题2.5〕已知SS = 2200H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057hpush axmov ax,0f79hpush axpop bxpop [bx]〔解答〕mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h〔习题2.6〕给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:mov al,89hadd al,aladd al,9dhcmp al,0bchsub al,aldec alinc al〔解答〕mov al,89h ; AL=89h CF ZF SF OF PFadd al,al ; AL=12h 1 0 0 1 1; 1000 1001+1000 100110001 0010add al,9dh ; AL=0afh 0 0 1 0 1; 0001 0010+ 1001 11011010 1111cmp al,0bch ; AL=0afh 1 0 1 0 1; 1010 1111-1011 1100* 0100 0011sub al,al ; AL=00h 0 1 0 0 1dec al ; AL=0ffh 0 0 1 0 1 ; 0000 0000- 0000 0001*1111 1111inc al ; AL=00h 0 1 0 0 1 ;1111 1111+0000 0001*1111 1111必考:〔习题2.10〕指出下列指令的错误:(1)xchg [si],30h (2)pop cs(3)sub [si],[di](4)push ah(5)adc ax,ds(6)add [si],80h(7)in al,3fch(8)out dx,ah〔解答〕(1)xchg的操作数不能是立即数(2)不应对CS直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in不支持超过FFH的直接寻址(8)out只能以AL/AX为源操作数〔习题2.11〕给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。
第1章课后习题1.从机器(汇编)语言程序员看,以下哪些是透明的?指令地址寄存器;指令缓冲器;时标发生器;条件码寄存器;乘法器;主存地址寄存器;磁盘外设;先行进位链;移位器;通用寄存器;中断字寄存器。
2.下列哪些对系统程序员是透明的?哪些对应用程序员是透明的?系列机各档不同的数据通路宽度;虚拟存储器;Cache存储器;程序状态字;"启动I/O"指令;"执行"指令;指令缓冲寄存器。
3.想在系列机中发展一种新型号机器,你认为下列哪些设想是可以考虑的,哪些则是不行的?为什么?(1) 新增加字符数据类型和若干条字符处理指令,以支持事务处理程序的编译。
(2) 为增强中断处理功能,将中断分析由原来的4级增加到5级,并重新调整中断响应的优先次序。
(3) 在CPU和主存之间增设Cache存贮器,以克服因主存访问速率过低而造成的系统性能瓶颈。
(4) 为解决计算误差较大,将机器中浮点数的下溢处理方法由原来的恒置"1"法,改为用只读存贮器存放下溢处理结果的查表舍入法。
(5) 为增加寻址灵活性和减少平均指令字长,将原来全部采用等长操作码的指令改成有3类不同码长的扩展操作码;并将源操作数寻址方式由原来的操作码指明改成增加一个如VAX-11那样的寻址方式位字段来指明。
(6) 将CPU与主存之间的数据通路宽度由16位扩到32位,以加快主机内部信息的传送。
(7) 为了减少使用公用总线的冲突,将单总线改为双总线。
(8) 把原来的0号通用寄存器改作为专用的堆栈指示器。
4.用一台40MHZ处理机执行标准测试程序,它含的混合指令数和相应所需的时钟周期数如下:指令类型指令数时钟周期数整数运算45000 1数据传送32000 2浮点15000 2控制传送8000 2求有效CPI、MIPS速率和程序的执行时间。
5.某工作站采用时钟频率f为15MHZ,处理速率为10MIPS的处理机来执行一个已知混合程序。
计算机组成原理与汇编语言程序设计课后习题及解答徐洁,俸远祯电子工业出版社第1章习题一1.什么是程序存储工作方式?答:计算机的工作方式——存储程序工作方式。
即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。
2.采用数字化方法表示信息有哪些优点?用数字化方法表示信息的优点:(1)抗干扰能力强, 可靠性高。
(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。
(3)数字化的信息可以存储、信息传送也比较容易实现。
(4)可表示的信息类型与范围及其广泛,几乎没有限制。
(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。
3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
4.数字计算机的主要特点是什么?1. (1)能在程序控制下自动连续地工作;(2|)运算速度快;(3)运算精度高;(4)具有很强的信息存储能力;(5)通用性强,应用领域及其广泛。
5.衡量计算机性能的基本指标有哪些?答:衡量计算机性能的基本指标:(1)基本字长——参加一次运算的数的位数;(2)数据通路宽度——数据总线一次能并行传送的位数;(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。
(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C 语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD2.将八进制数(37.2)8转换为十进制数及BCD码.解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD3.将十六进制数(AC.E)转换为十进制数及BCD码.解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。
中国教育史第一部分:中国古代教育1.六艺教育的内容是什么?2.孔丘在教育史上有哪些贡献?3.分析战国时期私学兴盛的原因。
4.试述稷下学宫的性质、特点和意义。
5.试比较墨儒教育思想的异同。
6.比较孟荀教育思想的异同。
7.评述法家教育思想的得失。
8.评《学记》对教育理论的贡献及历史地位。
9.汉朝文教政策是如何演变的?10.概述汉朝学校教育发展的基本情况。
11.评述董仲舒教育思想的基本内容和历史影响。
12.论述魏晋南北朝教育制度方面出现的新变化。
13.比较南北朝学校教育的异同。
14•试析颜之推教育思想与社会历史现实的关系。
15.隋唐时期的文教政策对其教育的发展有何作用?16.隋唐时期在教育制度上有何创新?教育发展的特点是什么?17.隋唐时期科举制度对学校教育发展有何影响?18.韩愈在教育理论上有什么新的发展?19.北宋“三次兴学”的具体内容是什么?20.分析书院产生的原因及两宋书院的特点。
21.试论宋元时期蒙学教育的基本经验和现实启示。
22.宋元时期科举制度对学校教育的影响。
23.朱熹是怎样论述“小学”和“大学”教育的?24.述评朱熹道德教育思想。
25.明代书院的发展特点及东林书院的特点。
26.王守仁道德教育思想的基本内容是什么?有什么积极意义?27.试论王守仁的儿童教育思想及意义。
28.诂经精舍和学海堂的特点。
29.试析黄宗羲“公其非是于学校”的思想。
30.王夫之的道德观有什么特点?31.颜元提出的“真学”“实学”及“习行”的具体内容是什么?有何积极意义?第二部分:中国近代教育+现代教育1.概述近代教会学校的发展情况,评析教会教育的性质和作用。
2.简要介绍洋务学堂的发展情况,并评析其特点。
3.评价洋务留学教育的历史作用。
4.评述“中体西用”的洋务教育指导思想。
5.维新派的教育实践及康有为、梁启超、严复的教育思想。
6•清末新政教育改革的基本内容有哪些?评价其历史地位。
7.评述《壬子揆丑学制》的内容、性质和特点。