汇编习题课
- 格式: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.评述《壬子揆丑学制》的内容、性质和特点。
汇编语言习题册(汇编语言课程设计组编制)汇编语言程序设计习题一.填空题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 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数,01110111,,00101111 ,查看正确答案无符号数: =211=D3H,01110111=119=77H,=131=83H,00101111=47=2FH,=170=AAH带符号数:= -45=D3H,01110111=+119=77H,= -125=83H,00101111=+47=2FH,= -86=AAH2 十六进制运算1A52H+4438H ,3967H-2D81H,37H×12H ,1250H×4H查看正确答案5E8AH,0BE6H,3DEH,4940H3 将十进制数变为8位补码,做运算(结果用二进制、十六进制、十进制表示)29+53,73-24,-66+82 ,-102-15查看正确答案00011101+00110101=01010010=52H=8201001001+=00110001=31H=49+01010010=00010000=10H=16+==8BH= -117》4 用压缩BCD码计算(结果用二进制、BCD码、十进制表示)29+53,73-24,66+18 ,132+75查看正确答案00101001+01010011=01111100+00000110==82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110==84H=8400000000+01110101=00000001+00000110=00000011=0207H=2075 符号位扩展(字节扩展为字,字扩展为双字)20A3H,94H ,3456H ,7FH ,EC00H查看正确答案000020A3H,FF94H,00003456H,007FH,FFFFEC00H6 若机器字长为16位,其无符号数表示范围是多少带符号数表示范围是多少分别用十进制和十六进制表示。
汇编课后题答案(清华大学出版社沈美明版)第一章.+习题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) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=00001001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=01010101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=01010101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=10101011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=10101011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。
4.1、判断下列标识符的合法性。
1)、code 合法2)、Data 合法3)、ABCDH 合法4)、1abcH 不5)、eax 不6)、01 合法7)、A?@ 合法8)、www@zsu 合法9)、***********.cn不10)、AX$DX 合法11)、_BX 合法12)、CX 不4.2、按下面要求写出相应的数据定义语句(未指定变量名的,可任意指定或省缺)。
1)、定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;DB 20,20 DUP(0)2)、定义一个以0为结束符的字符串,其初值为:The course is easy;DB “The course is easy”,03)、定义一个以'$'为结束符的字符串,该串中含有换行符和回车符;DB 0D,0A,”$”4)、定义100个字,其初值为0;DW 100 DUP(0)5)、从一个偶地址开始定义一个字变量word;EVENWORD DW ?6)、先定义一个字符串String,其偏移量指定为10,其初值为"ABCDEF",然后再定义3个字类型的数组Data,要求String和Data的偏移量相同;ORG 10STRING DB "ABCDEF"ORG 10DATA DW 3 DUP(?)7)、定义一个字符串String,其初值为"12345678",再定义4个字类型的数组Data,要求String和Data共享同一片内存单元;STRING DB "12345678"ORG $-8DATA DW 4 DUP (?)4.3、把下列C语言的变量定义语句改写成与之等价的汇编语言语句。
1)、char ch1, ch2[3], ch3[]="Are you ready?", ch4='Q';CH1 DB ?CH2 DB 3 DUP (?)CH3 DB "Are you ready?",0CH4 DB “Q”2)、int w1, w2[5], w3=0x1234, w4[]={90, 89, 432, 344};W1 DW ?W2 DW 5 DUP (?)W3 DW 1234HW4 DW 90,89,432,3443)、long int d1=1234, d2, d3[10], d4[]={1, 2, 3, 4, 5, 6};D1 DD 1234D2 DD ?D3 DD 10 DUP(?)D3 DD 1,2,3,4,5,64.4、假设4.3题中三组变量在内存中是连续存放的,且变量ch1的偏移量是20H,试求出其它每个变量的偏移量。
5.1dseg segmentCrLf db 0dh, 0ah, '$' dseg endscseg segmentassume cs:cseg, ds:dseg Start:mov ax, dsegmov ds, axmov ah, 1int 21hpush axlea dx, CrLfmov ah, 9int 21hpop axcmp al, 'a'jb Stopcmp al, 'z'ja Stopsub al, 20hmov dl, almov ah, 2int 21hStop: mov ah, 4chint 21hcseg endsend StartCR equ 0dhLF equ 0ahdseg segmentMsg1 db 'All equal.', CR, LF, '$'Msg2 db 'Only two equal.', CR, LF, '$'Msg3 db 'All three different from each other.', CR, LF, '$'Num1 dw ?; Num1、Num2与Num3为定义的三个16位数Num2 dw ?Num3 dw ?dseg endscseg segmentassume cs:cseg, ds:dsegStart:mov ax, dsegmov ds, axmov ax, Num1cmp ax, Num2je Already_Two_Equalcmp ax, Num3je Two_Equalmov ax, Num2cmp ax, Num3je Two_Equallea dx, Msg3jmp DoneAlready_Two_Equal:cmp ax, Num3je All_EqualTwo_Equal:lea dx, Msg2jmp DoneAll_Equal:lea dx, Msg1Done:mov ah, 9int 21hmov ah, 4chint 21hcseg endsend Start.386dseg segment use16Num dd ?, ?, ? ; 给定的3个32位带符号数dseg endscseg segment use16assume cs:cseg, ds:dsegStart:mov ax, dsegmov ds, axmov ecx, 1mov eax, NumNext: cmp eax, Num[ecx*4]jle Skipxchg eax, Num[ecx*4]mov Num, eaxSkip: inc ecxcmp ecx, 3jne Nextmov eax, Num + 4cmp eax, Num + 8jle Donexchg eax, Num + 8mov Num + 4, eaxDone:mov ah, 4chint 21hcseg endsend Start5.4.386option segment:use16dseg segmentMsg1 db 'Decimal:', '$'Msg2 db 0dh, 0ah,'Binary:', '$'ErrMsg db 0dh, 0ah,'Invalid data.', '$'dseg endscseg segmentassume cs:cseg, ds:dsegStart:mov ax, dsegmov ds, axlea dx, Msg1mov ah, 9int 21hmov ah, 1int 21hmov bl, alcmp bl, '0'jb Errorcmp bl, '9'jbe OkError: lea dx, ErrMsgmov ah, 9int 21hjmp DoneOk: lea dx, Msg2mov ah, 9int 21hshl bl, 4mov cx, 4NextBit:shl bl, 1setc dladd dl, 30hmov ah, 2int 21hloop NextBitDone: mov ah, 4chint 21hcseg endsend Start5.5.386dseg segment use16Data dw 100 dup (?)dseg endscseg segment use16assume cs:cseg, ds:dseg Start:mov ax, dsegmov ds, axmov ax, 0mov ecx, lengthof DataNext: mov bx, Data[ecx*2-2]bt bx, 0jnc Skipcmp ax, 0jz Okcmp ax, bxjbe SkipOk: mov ax, bxSkip: loop NextDone: mov ah, 4chint 21hcseg endsend Start5.6dseg segmentMsg1 db 'Hex:', '$'Msg2 db 0dh, 0ah, 'Bin:', '$' Buf db 5, ?, 5 dup (?) dseg endscseg segmentassume cs:cseg, ds:dseg Start:mov ax, dsegmov ds, axlea dx, Msg1mov ah, 9int 21hlea dx, Bufmov ah, 0ahint 21hlea dx, Msg2mov ah, 9int 21hmov cl, Buf + 1xor ch, chjcxz Exitmov si, 2Next: mov bl, Buf[si]cmp bl, '9'jbe Oksub bl, 7Ok: push cxmov cl, 4shl bl, clmov cx, 4Output: mov dl, '0'shl bl, 1jnc Skipinc dlSkip: mov ah, 2int 21hloop Outputmov dl, 20hmov ah, 2int 21hpop cxinc siloop NextExit: mov ah, 4chint 21hcseg endsend Start5.7.386dseg segment use16Array dw 5 ; 元素个数dw -1, 2, 4, 3, 4 ; 数组元素Max dw -32768Min dw 32767Sum dw 0Average dw 0dseg endscseg segment use16assume cs:cseg, ds:dsegStart:mov ax, dsegmov ds, axxor ecx, ecxmov cx, ArrayNext: mov ax, Array[ecx*2]add Sum, axcmp Max, axjge Skip1mov Max, axSkip1: cmp Min, axjle Skip2mov Min, axSkip2: loop Nextmov ax, Sumcwdidiv Arraymov Average, axDone: mov ah, 4chint 21hcseg endsend Start5.8(1)dseg segmentData1 db 1, 2, 3, 4, 5LEN = $ - Data1Data2 db 1, 2, 4, 3, 5Flag db 0Addr1 dd ?Addr2 dd ?dseg endscseg segmentassume cs:cseg, ds:dseg Start:mov ax, dsegmov ds, axmov si, 0mov cx, LENCompare: mov al, Data1[si]cmp al, Data2[si]jne Differentinc siloop Comparemov Flag, 1jmp DoneDifferent: lea ax, Data1[si]mov word ptr addr1, axmov word ptr addr1 + 2, dseglea ax, Data2[si]mov word ptr addr2, axmov word ptr addr2 + 2, dseg Done: mov ah, 4chint 21hcseg endsend Start(2)dseg segmentData1 db 1, 2, 3, 4, 5LEN = $ - Data1Data2 db 1, 2, 4, 3, 5Flag db 0Addr1 dd ?Addr2 dd ?dseg endscseg segmentassume cs:cseg, ds:dsegStart:mov ax, dsegmov ds, axmov es, axlea si, Data1lea di, Data2mov cx, LENcldrepe cmpsbjne Differentmov Flag, 1jmp DoneDifferent: lea ax, [si-1]mov word ptr addr1, axmov word ptr addr1 + 2, dslea ax, [di-1]mov word ptr addr2, axmov word ptr addr2 + 2, es Done: mov ah, 4chint 21hcseg endsend Start。
`00第一章课外练习题一、单项选择题:1.从键盘输入的字符,在计算机内存储的是它的(A)(A)二进制编码(B)四进制编码(C)八进制编码(D)十六进制编码2.6位无符号二进制数能表示的最大十进制数是(B)。
(A)64 (B)63 (C)32 (D)31 3.十进制数269变换为十六进制数是(C)。
(A)10B (B)10C (C)10D (D)10E 4.8位的微型计算机系统是以16位来表示地址,则该微机系统有(C)个地址空间。
(A)255 (B)65535 (C)65536 (D)1048576 5.8位有符号二进制数能表示的最大十进制数是(D)。
(A)256 (B)255 (C)128 (D)127 6.十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)。
(A)无符号十进制数136 (B)带符号十进制数-120(C)压缩型BCD十进制数88 (D)8位二进制数-8的补码表示7.有一个数值152,它与十六进制数6A相等,那么该数值是(B)。
(A)二进制数(B)八进制数(C)十进制数(D)四进制数8.7位ASCII总共可表示(C)个符号。
(A)256 (B)127 (C)128 (D)255 9.4B的字长是(C)。
(A)8位(B)16位(C)32位(D)64位二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.字节通常用英文单词“Bit”来表示(×)。
2.目前广泛使用的Pentium计算机其字长为5个字节(×)。
3.存储器中将8个相邻的二进制位作为一个单位,这种单位称为字节(√)。
4.微型计算机的字长并不一定是字节的整数倍(×)。
三、填空题1.8位有/无符号整数的表示范围写成16进制形式为(80~~7F)/(00~~FF)。
2.己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表(a)字符。