汇编语言课后习题答案
新版汇编语言程序设计1-5章【课后答案】
新版汇编语言程序设计【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
汇编语言(王爽)第二版课后题全答案
add ah,ah AX=D882Hadd al,6 AX=D888Hadd al,al AX=D810Hmov ax,cx AX=6246HMicrosoft(R) Windows DOS(C)Copyright Microsoft Corp 1990-2001.C:\DOCUME~1\ADMINI~1>debug-a0C1C:0100 mov ax,f4a30C1C:0103 mov ah,310C1C:0105 mov al,230C1C:0107 add ax,ax0C1C:0109 mov bx,826c0C1C:010C mov cx,ax0C1C:010E mov ax,bx0C1C:0110 add ax,bx0C1C:0112 mov al,bh0C1C:0114 mov ah,bl0C1C:0116 add ah,ah0C1C:0118 add al,60C1C:011A add al,al0C1C:011C mov ax,cx0C1C:011E-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8A3F4 MOV AX,F4A3-tAX=F4A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 B431 MOV AH,31-tAX=31A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC0C1C:0105 B023 MOV AL,23-tAX=3123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0107 NV UP EI PL NZ NA PO NC 0C1C:0107 01C0 ADD AX,AX-tAX=6246 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ NA PO NC 0C1C:0109 BB6C82 MOV BX,826C-tAX=6246 BX=826C CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010C NV UP EI PL NZ NA PO NC 0C1C:010C 89C1 MOV CX,AX-tAX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010E NV UP EI PL NZ NA PO NC 0C1C:010E 89D8 MOV AX,BX-tAX=826C BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0110 NV UP EI PL NZ NA PO NC 0C1C:0110 01D8 ADD AX,BX-tAX=04D8 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0112 OV UP EI PL NZ AC PE CY 0C1C:0112 88F8 MOV AL,BH-tAX=0482 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0114 OV UP EI PL NZ AC PE CY 0C1C:0114 88DC MOV AH,BL-tAX=6C82 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0116 OV UP EI PL NZ AC PE CY 0C1C:0116 00E4 ADD AH,AH-tAX=D882 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=00000C1C:0118 0406 ADD AL,06-tAX=D888 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011A NV UP EI NG NZ NA PE NC 0C1C:011A 00C0 ADD AL,AL-tAX=D810 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011C OV UP EI PL NZ AC PO CY 0C1C:011C 89C8 MOV AX,CX-tAX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011E OV UP EI PL NZ AC PO CY 0C1C:011E 0B0C OR CX,[SI] DS:0000=20CD-q检测点2.1(2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
汇编语言程序设计课后习题解答
《汇编语言程序设计》(宋人杰主编)课后习题解答第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.请解释变量和标号的含义,两者有何区别?答:标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。
IBM-PC汇编语言__课后习题答案
第一章基础知识1、用降幂法和除法将下列十进制数转换为二进制数和16进制数。
(1)369 (2)10000 (3)4095 (4)32767答案:(1)1,0111L,0001B;171H (3)1111,1111,1111B1;9FFFH2、将下列二进制数转换为16进制数和十进制效,(1)101101 (2)10000000 (3)]111111********* (4)111111答案:(1)2DH;45D (3)0FFFFH;65535D3、将下列16进制数转换为二进制数和十进制数。
(1)FA (2)5B (3)FFFE (4)12D4答案:(1)1111,1010B;250D (3)1111,1111,1111,1110B;65534D5、下列各数均为十进制数,请用8位二进制补码计算下列各题,并用16进制数表示其运算结果。
(1)(一85)十76 (2)85十(一76) (3)85—76(4)85一(一76) (5)(一85)一76 (6)(一85)一(一76)答案:(1)0F7H (2)9H (4)0A1H (5)5FH (6)0F7H7、下列各数均为用16进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制及字符是什么?(1)4F (2)2B (3)73 (4)59答案:(1)79D; O(大写)(2)43D; +(3)115D;s(小写)(4)89D; Y8、请写出下列字符串的ACSII码。
For example,This is a number 3692.答案46 6F 72 20 65 78 61 6D 70 6C 65 2C 0A 0D 54 68 6973 20 69 73 20 61 20 6E 75 6D 62 65 72 20 33 36 39第二章80x86计算机组织2、有两个16位字LEE5H和2A3CH分别存放在PC机存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
计算机组成原理与汇编语言课后习题及作业答案
《计算机组成原理与汇编语言》课后习题及作业答案王建东2006年9月第一章习题参考答案1、什么是存储程序工作方式?(P.2.)答:(1) 事先编制程序(2) 实现存储程序(3) 自动、连续地执行程序2、采用数字化方法表示信息有哪些优点?(P.5.)答:(1) 抗干扰能力强,可靠性高(2) 在表示数值时,可以获得很宽的表示范围以及很高的精度。
(3) 数字化的信息可以存储,信息传送也比较容易实现。
(4) 可表示的信息类型与范围及其广泛,几乎没有限制。
(5) 能用逻辑代数等数字逻辑技术进行信息处理,着就形成了计算机硬件设计的基础。
3、如果有7X9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
0000000000100000101000100010011111001000100100010010001000000004、数字计算机的主要特点是什么?(P.16.)答:(1) 能在程序控制下自动连续地工作(2) 运算速度快(3) 运算精度高(4) 具有很强的信息存储能力(5) 通用性强,应用领域极其广泛5、衡量计算机的基本指标有哪些?(P.17.)答:(1)基本字长(2)数据通路宽度(3)运算速度(4) 主存储器容量(5) 外存容量(6) 配置的外围设备及其性能(7) 系统软件配置6、举出一种实际计算机,列举出各部件、设备的技术性能及常配置的软件?略7、软件系统一般包含哪些部分?列举你熟悉的三种系统软件。
(P.9.)答:系统软件是一组使计算机良好运行而编制的基础软件。
它包括:(1)操作系统如:Windows 2000,Linux,Unix(2)编译程序、解释程序如:C++编译程序,Peal解释程序(3)各种软件平台如:数据库管理系统8、对源程序的处理有哪两种基本方式?(P.11.)答:对源程序的处理有解释和编译两种类型。
解释方式是边解释边执行。
如:BASIC 它的优点是支持人机对话方式的程序设计,可以边执行边修改;所需要的主存空间较小。
汇编语言课后题答案
汇编语⾔课后题答案检测点(1)1个CPU的寻址能⼒为8KB,那么它的地址总线的宽度为13位。
(2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。
(3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。
(4)1GB是24 (2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。
(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能⼒分别为:64(KB)、1(MB)、16(MB)、4(GB)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。
则它们⼀次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。
(7)从内存中读取1024字节的数据,8086⾄少要读512次,80386⾄少要读256次。
(8)在存储器中,数据和程序以⼆进制形式存放。
检测点(1) 写出每条汇编指令执⾏后相关寄存器中的值。
mov ax,62627 AX=F4A3Hmov ah,31H AX=31A3Hmov al,23H AX=3123Hadd ax,ax AX=6246Hmov bx,826CH BX=826CHmov cx,ax CX=6246Hmov ax,bx AX=826CHadd ax,bx AX=04D8Hmov al,bh AX=0482Hmov ah,bl AX=6C82Hadd ah,ah AX=D882Hadd al,6 AX=D888Hadd al,al AX=D810Hmov ax,cx AX=6246H检测点(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为0010H到1000FH。
(2)有⼀数据存放在内存20000H单元中,现给定段地址为SA,若想⽤偏移地址寻到此单元。
汇编语言课后习题答案
2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后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)mov20h,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=12h10011;10001001+10001001100010010add al,9dh;AL=0afh00101;00010010+1001110110101111cmp al,0bch;AL=0afh10101;10101111-10111100*01000011sub al,al;AL=00h01001dec al;AL=0ffh00101 ;00000000-00000001*11111111inc al;AL=00h01001 ;11111111+00000001*11111111必考:〔习题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的状态。
8086汇编语言习题解答
8086汇编语言习题解答第一章1.1、试根据自己使用计算机的经历,列举几个必须使用或最好是使用汇编语言编制程序的事例。
1.2、试完成下列数制间的转换⑴、十进制数转换为8位二进制数十进制:100对应二进制:01100100B十进制:56对应二进制:00111000B十进制:111对应二进制:01101111B十进制:120对应二进制:01111000B十进制:70对应二进制:01000110B⑵、8位二进制数(无符号数)转换为十进制数二进制:01010101B二进制:10101010B二进制:11110000B二进制:00001111B对应对应对应对应十进制:85十进制:170十进制:240十进制:15⑶、十进制数转换为十六进制数十进制:40对应二进制:00101000B十进制:80对应二进制:01010000B十进制:105对应二进制:01101001B十进制:114对应二进制:01101101B十进制:207对应二进制:11001111B1.3、试把下面用补码表示的二进制数转换为对应的十进制真值二进制补码:01111000二进制补码:11011001二进制补码:10000001二进制补码:10001000二进制补码:00100111二进制补码:11110000对应的十进制值数真值:+120对应的十进制值数真值:-39对应的十进制值数真值:-127对应的十进制值数真值:-120对应的十进制值数真值:+39对应的十进制值数真值:-161.4、由键盘输入字符通常都是以该字符的ASCII码形式表示的。
若现在从键盘上输入十六进制数0~F,那么应如何处理才能把十六进制转换为4位二进制数0000~1111.答:将键盘输入的数0~F的ASCII码,每输入一个字符,减去30H 后,再存入内存,这样就完成了把从键盘上输入的十六进制ASCII码转换为4位二进制数0000~1111.1.5、试分别判断下列各组数据中哪个数据最大?哪个最小?①、A=0.101B②、A=1011BB=0,101DB=1011D1C=0,101HC=1011H3答:第①组:A=1某2+1某2=0.625B=0.101C=1某16+16=0.0625+0.00024414=0.0627441413所以A最大,C最小第②组,B最大,A=B最小1.6、现有一个二进制数10110110.若将该数看着是无符号数、原码表示的带符号数、补码表示的带符号数,它对应的十进制数的真值是多少答:10110110.的无符号数的十进制是:+182;10110110.的原码带符号数的十进制是:-5410110110.补码表示的带符号数的十进制是:+741.7、下列各组数据均为十进制数,先将各数据转换为补码表示的带符号数,然后用补码的加减运算分别完成下列各小题,并用十六进制数形式回答运算结果。
新版汇编语言程序设计1-5章【课后答案】
新版汇编语言程序设计【课后习题答案】第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 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数,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-5章【课后答案】
新版汇编语言程序设计【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
汇编语言课后习题及答案 按章节 超全面
`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)字符。
汇编语言课后答案
汇编语言课后答案第一章. 习题用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(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=7FFFH 将下列二进制数转换为十六进制数和十进制数:(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=255将下列十六进制数转换为二进制数和十进制数:(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=4660完成下列十六进制数的运算,并转换为十进制数进行校核:⑴ 3A+B7 (2) 1234+AF (3) ABCD-FE ⑷ 7AB X 6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB X6FH=35325H=217893下列各数均为十进制数,请用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=0000 1001B=09H ;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H ;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=10101011B+10110100B=01011111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=10101011B+01001100B=B=0F7H;CF=0;OF=0下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:⑴D8H表示的带符号数为-40 , D8H表示的无符号数为216;(2) FFH 表示的带符号数为-1 ,FFH 表示的无符号数为255。
汇编语言课后习题答案 王爽主编
补全编程,利用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入栈,最后转到标号处执行指令。
汇编语言课后答案第3章
第3章习题3.1 填空题(1)汇编语言指令由两部分组成:___操作码__________表示指令的操作内容,_____操作数________表示指令在执行过程中所用到的数据信息。
(2)在16位CPU的寄存器间接寻址方式中,若用__SI_____、__DI______、__BX______作为间接寻址的寄存器,则操作数在____DS___段中;若用___BP____作为间接寻址的寄存器,则操作数在 ___SS_____段中。
(3)在16位CPU的基址变址寻址方式中,基址寄存器可以为__BX_____或__BP______,变址寄存器可以为___SI____或___DI_____,若用__BX_____作为基址寄存器,则操作数在____数据段___段中;若用___BP____作为基址寄存器,则操作数在__堆栈______段中。
(4)设AX=2000H,BX=2300H,则在执行了指令CMP AX,BX后,标志CF=__1_______、ZF=____0____。
(5)当执行指令DIV BL后,被除数在_AX_______中,所得商在_______AL__中,余数在_____AH___中。
3.2 选择题1.若栈顶的物理地址为12000H,当执行完指令PUSH BX后,栈顶的物理地址为(D)A. 12001HB. 12002HC. 11FFFHD. 11FFEH2.在程序运行过程中,确定下一条指令的物理地址的计算表达式是(B)A. DS×16+SIB. CS×16+IPC. SS×16+SPD. ES×16+DI3.下面指令执行后,将改变寄存器AX内容的指令是(B)A. OR AX,AXB. AND AX,BXC. TEST AX,01HD.CMP AX,14.设AH=79H,当执行指令ADD AH,98H后,标志位CF和0F的值分别为(D )A. 0,0B. 0,1C. 1,0D. 1,15.设AL=0A0H,要使结果AL=50H,应执行的指令是( D)A. AND AL,0F0HB. NOT ALC. OR AL,0F0HD. XOR AL,0F0H6.设AH=68H,当执行指令SUB AH,72H后,标志位CF和SF的值分别为(D )A. 0,0B. 0,1C. 1,0D. 1,17.要使寄存器AL的最低位置1,应使用下面的指令( C )A. AND AL,01HB. XOR AL,01HC. OR AL,01HD. NOT AL8.要使BL寄存器的最高位清0,应使用下面的指令(D)A. AND BL,80HB. OR AL,7FHC. OR BL,80HD. AND BL,7FH9. 将寄存器AX的内容乘以2的正确指令序列是( A )A. SHL AX,1B. SHR AX,1C. ROL AX,1D. RCR AX,110.下列指令执行后,寄存器AL中的内容为(C)MOV AL,90HADD AL,ALADC AL,ALA. 20HB. 240HC. 41HD. 241H3.3 说明下列指令中源操作数的寻址方式。
汇编语言课后答案第6章
第6章习题6.1 主程序与子程序之间进行参数传递有哪几种方法?简单说明并比较。
6.2 编写一个子程序,把16位二进制数转换为5位十进制数ASCII码。
6.3 编写一个把16位二进制数转换为4位十六进制数ASCII码的子程序6.4 编写一个计算字符串长度的子程序,字符串以0为结尾标志。
入口参数:字符串的首地址指针为DS:SI;出口参数:在AX中返回字符串的长度。
6.5 编写程序,将字符串STING1的内容复制到字符串STRING2中。
要求由子程序来实现字符串的复制,并采用寄存器来传递参数。
6.6 用通过存储单元传递参数的方法完成上题。
6.7 用通过堆栈传递参数的方法完成上题。
6.8 设计程序,从键盘接收一个字符串,显示字符串的长度,要求计算长度的工作由子程序来实现。
6.9 编程计算三个变量的绝对值之和,求绝对值采用子程序结构以简化程序。
6.10 编写程序完成运算X=A*B+C(设各数及结果都不超过65536),A、B、C为从键盘输入的十进制数,要求从键盘接收十进制数并转换为二进制的工作由子程序来完成。
6.11 编写程序,将内存缓冲区BUFFER1中的10个压缩型BCD码数转换成非压缩的BCD码,保存到缓冲区BUFFER2中。
要求转换工作由子程序来完成。
6.12 从键盘输入一组字符,直到按ESC键为止,存储在内存缓冲区BUFFER中。
要求用子程序来实现当输入字符为a~z时,则修改为A~Z。
6.13 阅读下面子程序,说明它完成的功能是什么?子程序的入口参数和出口参数各是什么?SUM16 PROC NEARMOV AX,0MOV DX,0LOP:ADD AX,[BX]ADC DX,0ADD BX,2LOOP LOPRETSUM16 ENDP完成N个数(字)的累加。
入口参数:CX=N,BX=N个数的首地址。
出口参数:累加和,DX:AX。
6.14 编写子程序,把用ASCII码表示的两位十进制数转换为对应的二进制数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后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)mov20h,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=12h10011;10001001+10001001100010010add al,9dh;AL=0afh00101;00010010+1001110110101111cmp al,0bch;AL=0afh10101;10101111-10111100*01000011sub al,al;AL=00h01001dec al;AL=0ffh00101 ;00000000-00000001*11111111inc al;AL=00h01001 ;11111111+00000001*11111111必考:〔习题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的状态。
mov ax,1470hand ax,axor ax,axxor ax,axnot axtest ax,0f0f0h〔解答〕mov ax,1470h;AX=1470H CF ZF SF OF PFand ax,ax;AX=1470H00000;0001010001110000or ax,ax;AX=1470H00000xor ax,ax;AX=0000H01001not ax;AX=FFFFH01001test ax,0f0f0h;AX=FFFFH00101注意:MOV和NOT指令不影响标志位;其他逻辑指令使CF=OF=0,根据结果影响其他标志位。
〔习题2.26〕按照下列要求,编写相应的程序段:(1)起始地址为string的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。
mov si,0mov dl,string[si];第1个字符送dl寄存器mov si,5mov dh,string[si];第6个字符送dh寄存器(2)从主存buffer开始的4个字节中保存了4个非压缩BCD码,现按低(高)地址对低(高)位的原则,将它们合并到DX中。
xor si,si;si清零mov al,buffer[si];第一字节inc simov ah,buffer[si];第二字节mov cl,4shl ah,cl;BCD码移到高半字节or al,ah;组合成压缩BCD码mov dl,al;存入dl寄..inc simov al,buffer[si];第三字节inc simov ah,buffer[si];第四字节mov cl,4shl ah,cl;BCD码移到高半字节or al,ah;组合成压缩BCD码mov dh,al;存入dh寄..必考:(3)编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。
tes dx,0f000hjz zeromov ax,-1jmp donezero:mov ax,0done:ret〔习题2.34〕补充例2.40,当有溢出时显示“Error!Overflow!”,无溢出时显示“OK”。
〔解答〕okmsg db‘OK’,‘$’errmsg db‘Error!Overflow!’,‘$’…mov ax,Xsub ax,Yjo overflowmov dx,offset okmsgjmp nextoverflow:mov dx,errmsgnext:mov ah,9int21h错误解答:mov ax,Xsub ax,Yjo overflowmov dx,offset okmsgokmsg db‘OK’,‘$’mov dx,errmsg;错误1:数据定义在代码中mov ah,9int21hoverflow:errmsg db‘Error!Overflow!’,‘$’mov dx,errmsg;错误2:缺少JMP 指令mov ah,9int21h必考:习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU 动作的说明,并在程序执行前由汇编程序完成处理。
必考:〔习题3.9〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。
(1)mov byte ptr[bx],1000(2)mov bx,offset myword[si](3)cmp mybyte1,mybyte2(4)mov al,mybyte1+mybyte2(5)sub al,myword(6)jnz myword〔解答〕(1)1000超出了一个字节范围(2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si](3)两个都是存储单元,指令不允许(4)变量值只有执行时才确定,汇编过程不能计算(5)字节量AL与字量myword,类型不匹配(6)Jcc指令只有相对寻址方式,不支持间接寻址方式〔习题3.11〕给出下列语句中,指令立即数(数值表达式)的值:(1)mov al,23h AND 45h OR67h(2)mov ax,1234h/16+10h(3)mov ax,NOT(65535XOR1234h)(4)mov al,LOW1234h OR HIGH5678h(5)mov ax,23h SHL4(6)mov ax,1234h SHR6(7)mov al,’a’AND(NOT(’a’-’A’))(8)mov al,’H’OR00100000b(9)mov ax,(76543LT32768)XOR7654h〔解答〕注:对于逻辑运算,有关操作数可化为二进制数。
(1)67h(2)133h(3)1234h(4)76h(5)0234h(6)0048h(7)41h(8)68h(9)7654h必考〔习题3.15〕请设置一个数据段mydataseg,按照如下要求定义变量:(1)my1b 为字符串变量:Personal Computer(2)my2b为用十进制数表示的字节变量:20(3)my3b为用十六进制数表示的字节变量:20(4)my4b为用二进制数表示的字节变量:20(5)my5w为20个未赋值的字变量(6)my6c为100的常量(7)my7c表示字符串:Personal Computer〔解答〕mydataseg segmentmy1b db‘Personal Computer’my2b db20my3b db14h;20hmy4b db00010100bmy5w dw20dup(?)my6c equ100;my6c=100my7c equ<Personal Computer>mydataseg ends〔习题3.25〕按下面要求写一个简化段定义格式的源程序(1)定义常量num,其值为5;数据段中定义字数组变量datalist,它的头5个字单元中依次存放-1、0、2、5和4,最后1个单元初值不定;(2)代码段中的程序将datalist中头num个数的累加和存入datalist的最后1个字单元中。
〔解答〕.model small.stack.datanum equ5datalist dw-1,0,2,5,4,?.code.startupmov bx,offset datalistmov cx,numxor ax,axagain:add ax,[bx]inc bxinc bxloop againmov[bx],ax.exit0end〔习题4.19〕编写计算100个正整数之和的程序。
如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示‘overflow’。