汇编习题课
汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计(第四版)第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
80X86汇编语言程序设计教程+课后习题答案(清华大学版)

第二章答案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)4F (2)2B (3)A3 (4)E8
3
原码 反码 补码
分别用8位二进制和2位十六进制数写出下列十进制 数的补码表示 (1) 16 (2) -16 (3) 127 (4) -128 (5) ±0 一些边界及特殊值, 一些边界及特殊值, 希望大家牢记! 原码、补码 原码希望大家牢记! 、补码00010000B 10H 原码10010000B 补:11110000B F0H 原码 原码、补码01111111B 7FH 原码、补码 补码10000000B 补码 补码00000000B 补码 80H 00H
23
数据传送指令
设有关寄存器及存储单元的内容如下: (DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H (20101)=34H,(20102)=56H,(20103)=78H, (21200)=2AH,(21201)=4CH,(21202)=B7H, (21203)=65H,说明下列各指令执行后AX寄存器的内容 (21203)=65H, AX (1)MOV AX,1200H (2)MOV AX, BX (3)MOV AX, [1200H] (4)MOV AX, [BX] (5)MOV AX, 1100[BX] (6)MOV AX, [BX][SI] (7)MOV AX,1100[BX][SI]
14
存储单元
试读出30022, 30024字节单元的内容 以及30021、30022字单元的内容
... 30020H 1 2 3 4 A B C D 30024H E F …
15
存储单元
有两个16位字1EF5和2A3C分别存放在PC机存储器 的000B0H和000B3H单元中,请用图表示出它们在 存储器里的存放情况
第1章课后习题

第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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AL,0
JG ROUTINE_3
JG ROUTINE_4
ROUTINE_1:MOV Y,1
JMP
EXIT
ROUTINE_2:MOV Y,2
JMP
EXIT
ROUTINE_3:MOV Y,3
JMP
EXIT
ROUTINE_4:MOV Y,4
EXIT: ret
习题
习题
3.38 辨析 LOOP LOOPE LOOPNE
SUB
AX,AX
MOV
DL,X
TEST
DL,01H
JZ NEXT1
INC AL
NEXT1:TEST DL,04H
JZ NEXT2
INC AL
NEXT2:TEST DL,10H
JZ NEXT3
INC AL
NEXT3:CMP AL,2
JG ROUTINE_1
CMP
AL,1
JG ROUTINE_2
CMP
习题
3.30 STRING DB ‘The date is FEB&03'
MOV CX,18 MOV AL,'&' LEA DI,STRING CLD REPNE SCASB MOV BYTE PTR [DI-1],20H
3.34 ADD JNO JNC SUB JNC JNO JMP
AX,BX L1 L2 AXΒιβλιοθήκη BX L3 L4 SHORT L5
JMP SHORT EXIT L2: MOV AX,2 EXIT:INT 20H
;(AX) = 1 ;EXIT ;(AX) = 2 ;EXIT
习题
3.37 要求测试在status中的一个字节,如果第1,3,
5位均为1则转移到routine_1,有2位为1则转移 到routine_2,有1位为1则转移到routine_3,有0 位为1则转移到routine_4
习题
4.5 (2)WORD_BAR DW 5 DUP(0,1,2),?,-
5,'BY','TE',256H
00,00,01,00,02,00, 00,00,01,00,02,00, 00,00,01,00,02,00, 00,00,01,00,02,00, 00,00,01,00,02,00, ??,??,FB,FF,59,42, 45,54,56,02
3.39 辨析 NEAR FAR
习题
习题
4.5 (1)BYTE_VAR DB 'BYTE',12,-12H,3 DUP(0,?,2
DUP(1,2),?) 42,59,54,45,0D,EE,00,?,01,02,01,02,?00,?,01,02,
01,02,?,00,?,01,02,01,02,?
习题
AX (1) 147B L1 (2) B568 L1 (3) 42C8 L2 (4) D023 L5 (5) 94B7 L5
BX 80DC 54B7 608D 9FD0 B568
3.36 MOV MOV ADD ADC CMP JL JG CMP JBE
DX,X+2 AX,X AX,X DX,X+2 DX,Y+2 L2 L1 AX,Y L2
习题
4.8 PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ? PLENGTH EQU $-PARTNO 问PLENGTH为多少?代表意义
习题
4.12 MOD 求余 GE 大于等于
习题
4.14 FLDA DB ? TABLEA DW 20 DUP(?) TABLEB DB 'ABCD' (1)TYPE FLDB (2)TYPE TABLEA (3)LENGTH TABLEA (4)SIZE TABLEA (5)LENGTH TABLEB
习题
;(DX) = (X+2) = PH ;(AX) = (X) = PL ;(AX) = (2*X) = 2PL ;(DX) = (2*(X+2))=2PH ;2PH-QH ;2PH<QH------>L2 ;2PH>QH------>L1 ;2PL-QL ;2PL<=QL----->L2
习题
3.36 L1: MOV AX,1
习题
4.15 (1)DATA_SEG SEG (2)SEGMENT 'CODE' (3)MYDATA SEGMENT/DATA
ENDS (4)MAIN_PROC PROC FAR
ENDS MAIN_PROC MAIN_PROC ENDP
习题
4.17 双精度加法
5.5 mov ah,1 int 21h and al,0fh cbw mov cx,ax jcxz exit
习题
3.23 (6)test bx,01h
Bx: 1110 0011 0000 0001
0000 0001 主要影响ZF,通过ZF来进行调转
TEST BX,01H JZ NEXT
习题
3.26 MOV SHL MOV SHL SHR OR
CL,04 DX,CL BL,AH AX,CL BL,CL DL,BL
bell: mov dl,07 mov ah,02h int 21h loop bell
exit: ret
习题
习题
5.12 5.14