汇编语⾔程序设计(第⼆版)刘慧婷王庆⽣主编课后参考答案
程序设计(第⼆版) 刘慧婷 王庆⽣ 主编 课后参考答案
第⼀章
1.1 什么是机器语⾔?什么是汇编语⾔?简述汇编语⾔的特点。
机器语⾔就是⽤编码组成的机器指令的集合和⼀组使⽤机器指令的规则。汇编语⾔是对机器指令中的操作码⽤英⽂单词的缩写描述,对操作数⽤标号、变量、常量描述。
汇编语⾔的特点:
(1)与机器有关:移植性差,但可直接控制硬件。
(2)程序效率⾼。
(3)局限性:受指令的限制,如考虑存储单元等。
(4)调试困难。
1.2 汇编程序与汇编源程序的区别是什么?
汇编源程序是指⽤汇编语⾔编写的程序,⽽汇编程序特指将汇编源程序汇编成⽬标⽂件的编译程序。
1.3 把下列⼗进制数转换为⼆进制数和⼗六进制数。
答:(1)1000011,43 (2)100010, 22
(3)1111 1101,FE (4)111 1011,7B
1.4 把下列⼆进制数转换为⼗六进制数和⼗进制数。
答:(1)6D,109 (2)B2,178, (3)3F,63
1.5 作下列⼗六进制数的运算,并转换为⼗进制数校核。
答:(1) BE (2)3D (3) 89 (4) B41
1.6 根据补码定义把下列⼗进制数表⽰为8位⼆进制补码。
答:(1)0100 0000 (2)[10011000]原=[1110 1000]补
第⼆章
2.1 简述计算机系统组成。
答:计算机由中央处理器CPU,存储器,输⼊系统,输出系统组成,由系统总线连接在⼀起。CPU包括运算器和控制器,运算器执⾏指令,控制器负责计算机的控制。存储器是计算机的记忆部件,以⼆进制形式存放程序和数据。输⼊输出系统包括⼤容量存储器,如硬盘,以及其他外设,如⿏标,键盘,显⽰器等。
2.2 简述16位机的各类寄存器的主要作⽤。(1)67 (2)34 (3)254 (4)1231(1)01101101 (2)10110010 (3)111111
1(1)5A+64 (2)86-49 (3)123-9A (4)43×2B
1(1) 64 (2) -24
1
答:(1)数据寄存器:Ax,Bx,Cx,Dx; AX:作为累加器,是算术运算的主要寄存器。在乘除等指令中存放操作数,在I/O指令中使⽤它与外部设备传送信息。BX:当通⽤寄存器使⽤,在计算存储器地址时,作基址寄存器使⽤。CX:当通⽤寄存器使⽤,此外常⽤来保存计数值,当计数器使⽤。
DX:当通⽤寄存器使⽤,⼀般在作双字长运算时把DX和AX组合使⽤,对某些I/O操作,DX⽤来存放I/O的端⼝地址。
(2)地址寄存器:Sp,Bp,Si,Di
(3)段寄存器:Cs,Ds,Es,Ss;段寄存器的作⽤是专⽤于存储器寻址,⽤来直接或间接地存放段地址。
(4)专⽤寄存器:Ip,Flags;Ip寄存器专门存放下⼀条指令的地址,Flags标志寄存器,⼜称程序状态寄存器。它是存放条件码标志、控制标志和系统标志的寄存器。
2.3 写出每条汇编指令执⾏后相关寄存器的值。
Mov ax, 1345H ax=1345H_______ Mov ah, 24H ax=2445H_______ Mov al, 45H ax=2445H_______ Mov bx, 3412H
bx=3412H_______ Mov al, bh ax=2434H_______
2.4实模式下,写出段地址和偏移地址为1234:2002、1430:0042、FF00:0FFF的物理地址。
答:
1234:2002=12340+2002=14342
1430:0042=14300+0042=14342
FF00:0FFF=FF000+0FFF=FFFFF
2.5下列各数均为⼗进制数,请采⽤8位⼆进制补码运算,并回答标志寄存器FLAGS中CF和OF的值,运算结果所代表的⼗进制数是多少?如果⽤16位⼆进制补码运算,其结果所代表的⼗进制数是多少?FLAGS中CF和OF的值呢?
(1)85+69 (2)85+(-69) (3)85-(-69) (4)85-(69)
答:85=55H,69=45H,-69=BBH,
8位⼆进制补码运算:
(1)85+69 =55H+45H=9AH=154, CF=0,OF=1
(2)85+(-69)=55H+BBH=10H=16,CF=1,OF=0
(3)85-(-69)=55H-BBH=9AH=154,CF=1,OF=1
(4)85-(69)=55H-45H=10H=16,CF=0,OF=0
16位⼆进制补码运算:
85=0055H,69=0045H,-69=0FFBBH,
(1)85+69 =0055H+0045H=009AH=154, CF=0,OF=0
(2)85+(-69)=0055H+0FFBBH=0010H=16,CF=1,OF=0
(3)85-(-69)=0055H-0FFBBH=009AH=154,CF=1,OF=0
(4)85-(69)=0055H-0045H=0010H=16,CF=0,OF=0
2.6 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围从____00010H_____________到
____1000FH_____________。
2.7 有⼀数据存放在20000H单元中,现给定段地址为SA,若想⽤偏移地址寻到此单元,则SA应满⾜的条件是:最⼩为
__1001H____________,最⼤为____2000H________________。
2.8 已知8086系统某存储单元物理地址为:52506H,你认为段基址的最⼤值、最⼩值分别是多少?8086微机最多可以有多少个不同的段基址
答:52506=50000+2506,=52500+0006,基地址最⼤为5250,最⼩为5000(4251).
段地址取值范围:0000—FFFF。既65536个。
2.9从物理地址为00100H开始到00103H单元中顺序存放的数据为:12H,34H,56H,78H。请画出数据存放⽰意图,并回答以下问题:
(1)写出00101H字节单元的内容
(2)写出00102H字单元的内容
答案:
(1)(00101)= 34H
(2)(00102)= 7856H
第三章
3.1 写出从汇编语⾔源程序的建⽴到产⽣可执⾏⽂件的步骤和上机操作命令。
答:(1)⽤编辑程序EDIT建⽴ .ASM源⽂件
(2)⽤汇编程序MASM把.ASM⽂件原⽂件汇编成.OBJ⽂件
(3)⽤连接程序LINK将.OBJ⽂件转换成.EXE⽂件
(4)在DOS下直接运⾏.EXE⽂件或在DEBUG下调试该.EXE⽂件
3.2 列表⽂件.LST 是在什么阶段产⽣的?列表⽂件.LST 中有哪些内容?
答:.LST 在汇编得到.obj的同时得到,列表⽂件报告了汇编过程中产⽣的很多有价值的参考信息。主要包括源程序和机器语⾔清单、指令和变量的偏移地址等等。
3.3 写出定义⼀个代码段的语句,段名为MYPRG 。
答:MYPRG segment
assume cs: MYPRG
start:
MYPRG ends
End start
3.4 程序中⽤什么语句来结束程序的执⾏?⽤什么语句来表⽰程序的结束和指出程序执⾏的起点?
答:程序的结束:mov ah,4ch
int 21h
程序的结束和指出执⾏的起点:End start
3.5 汇编语⾔源程序的⽂件扩展名是什么?把它改为.EXE 扩展名后,可以认为是可执⾏程序吗?
答:源程序的⽂件扩展名为*.asm,改扩展名不可以执⾏。
汇编指令有多少个3.6 列出⼦⽬录C:\YOUPRG 下的扩展名为.ASM 的所有⽂件,在D 盘根⽬录下建⽴⼀个⼦⽬录MYPRG ,并进⼊⼦⽬录MYPRG ,再把C:\YOUPRG 下的⽂件YOU.ASM 复制到D:\MYPRG 下。写出完成以上要求的DOS 命令。
3.7 下图为DEBUG 调⼊的可执⾏程序,回答以下问题:
(1)程序的起始物理地址是多少?结束地址是多少?
(2)CS寄存器的值是什么?
(3)程序的功能是什么?
(4)写出查看DS:0处内容的DEBUG命令。
(5)程序中2处的INT 21指令执⾏后有什么结果?
(6)如果要运⾏这个程序应该⽤什么DEBUG命令?
(7)DEBUG命令-T=0 4 之后,寄存器AX、DS、DX的值是多少?
答:(1)0B630,0B63E
(2)0B63
(3)显⽰0B62:0000存储的字符串
(4)-d 0B62:0000
(5)第⼀处显⽰字符串,第⼆处结束程序
(6)-g
(7)(AX)=0962,(DS)=0B62,(DX)=0000
3.8 解释DEBUG 程序中的如下调试命令。答:(1)列出⼦⽬录:C:\YOUPRG>dir *.asm (2)建⽴⼦⽬录:D:\>MD MYPRG (3)复制: C:\YOUPRG>copy YOU.asm D:\MYPRG
1
2
3
D , - E, - T, - G, - A , - R
答:- D 显⽰内存内容
E 修改内存单元内容
T 跟踪命令
G 运⾏命令
A 汇编命令
R 查看或修改寄存器内容
3.9 ⽤DEBUG调⼊PROG.EXE后,若程序列出如下:
1234:0100 MOV BX, [4000]
1234:0104 MOV AX, [BP]
1234:0106 MOV AH, 1
1234:0108 INT 21
1234:010A MOV DL, AL
1234:010C MOV AH, 2
1234:010E INT 21
1234:0110 RET
列出上⾯程序的DEBUG命令是( )。
寄存器CS的值为( ),第⼀条指令的物理地址为( )。
如果要修改寄存器BX为1200H,应键⼊DEBUG命令( )。
若要修改第⼆条指令中的BP为BX,应键⼊DEBUG命令( ) 。
答:(1) U
(2) 1234H
(3) 12440H
(4) R BX
(5) A [0104]
3.10简述在WIN7系统中执⾏汇编的⽅法。
DosBox是⼀款在Windows系统运⾏DOS程序的环境模拟器。下载安装DosBox,运⾏该程序,出现DosBox运⾏界⾯,运⾏挂载命令mount,即可以将Dos程序放置在Windows环境下Dos模拟器中运⾏,其过程为挂载。
3.11 简述DOS系统功能INT 21H调⽤⽅法。
答:(1)将调⽤功能的功能号存⼊AH寄存器。
(2)如必要,设置该调⽤功能的⼊⼝参数。
(3)执⾏INT 21H指令。
(4)如必要,按规定取得出⼝参数(返回参数)。
3.12 Debug命令调试含有“INT 21H”命令的程序段时,如何实现单步执⾏,“-t”命令为何⽆法实现?
答:“INT 21H”指令是Dos的系统调⽤,如果使⽤“-t”跟踪,则进⼊DOS系统⼦程序。如果希望单步执⾏,可以通过P命令或“-g=x x+1”来实现。
3.13 有主存数据段存放情况如下图所⽰,请写出代码,输出数据段的字符串“inspire a generation!”。
答: mov ax,145B
mov ds,ax
mov ah,09
mov dx,0
int 21h
第四章
4.1 何为段地址?何为有效地址?何为物理地址?
答:
例如DS=6542H,指令mov ax,DS:[123A]; 123A为有效地址,6542H为段地址,65420H+0123AH=6665A即物理地址.
4.2 指出以下指令的寻址⽅式,array是变量。
(1)mov ax, 9
(2)mov byte ptr[bx],9
(3)mov bx,[di] (4)mov ax,bx
(5)mov [si+bx],9
(6)mov array[bx],cx
(7)mov ax, array+9
(8)mov ax, array[bx+di] 答: (1)⽴即数寻址
(2)寄存器间接寻址
(3)变址寻址
(4)寄存器寻址
(5)基址变址寻址
(6)相对基址寻址
(7)直接寻址
(8)相对基址变址寻址
4.3 假定(DS)=1200H,(SS)=4400H, (BX)=463DH,(BP)=2006H, (SI)=6A00H,位移量D=4524H,以AX寄存器为⽬的操作数,试写出以下各种寻址⽅式下的传送指令,并确定源操作数的有效地址EA和物理地址。
(1)⽴即寻址
(2)直接寻址
(3)使⽤BX的寄存器寻址;⽆EA
(4)使⽤BX的间接寻址
(5)使⽤BP的寄存器相对寻址
(6)基址变址寻址
(7)相对基址变址寻址
答:(1)操作数在指令中⽆EA
(2)直接寻址:EA=4524H,物理地址=DS:4524
(3)使⽤BX的寄存器寻址:⽆EA
(4)使⽤BX的间接寻址:EA=463DH,物理地址=DS:463D
(5)使⽤BP的寄存器相对寻址:MOV AX,[BP+4524],EA=2006+4524,
物理地址=SS:EA
(6)基址变址寻址: MOV AX,[BX+SI],EA= BX+SI,物理地址=DS:EA
(7)相对基址变址寻址:MOV AX,[4524+BX+SI],EA=4524+BX+SI,
物理地址=DS:EA
4.4 在数据段定义了ARRAY数组,其中依次存储了五个字数据,ARRAY的起始地址(第⼀个数据的地址)为24H,请⽤不同寻址⽅式的指令,把第5个字送AX寄存器,指令条数不限。
答:(1)直接寻址
MOV AX,ARRAY+8 或MOV AX,[ARRAY+8] (2)使⽤BX的间接寻址
LEA BX,ARRAY+8 ;MOV AX,[BX] (3)使⽤BX的寄存器相对寻址
LEA BX,ARRAY ;MOV AX,[BX+8] (4)基址变址寻址
LEA BX,ARRAY ; MOV SI,8 ; MOV AX,[BX+SI]
第五章
5.1 溢出标志OF与进位标志CF有何作⽤和区别?
答:处理器对两个操作数进⾏运算时,按照⽆符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。应该利⽤哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是⽆符号数,就应该关⼼进位;认为是有符号数,则要注意是否溢出。
5.2 有符号数⽐较⼤⼩,当AX < BX时程序转向标号L1,若前导指令为CMP AX, BX,后续指令应为什么?若视为⼆个⽆符号数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论