汇编语言程序设计试题及答案
一.名词解释(本大题共5小题,每小题3分,共15分)试解释下列名词的含义。
1.寄存器:计算机系统内,位于CPU内部的存储单元,CPU访问此类存储单元不需要使用总线。
2.物理地址:CPU通过地址总线向外发送的20位地址,在访问内存单元前,CPU必须先将CPU内部的逻辑地址转换为物理地址。
3.段基值:逻辑地址的一个组成部分,用于指示一个段在内存中的起始地址。
4.寻址方式:指令获取操作数的方式。
5.补码:计算机系统内部用于表示带符号数的一种编码,正整数的补码为其真值本身,负整数的补码为其真值变反加1的结果。
二.计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算结果。
1.将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?
答案:二进制为 01100100B,十六进制为64H
2.假设(DS)=0C00H,(BX)=0210H,对于指令MOV DS:100H[BX],AL,其目的操作数的物理地址为多少?
答案:EA = (BX)+0100H = 0310H,物理地址 = (DS)*16 + EA = 0C000H + 0310H = 0C310H
3.假设(BX)=0100H,(SI)=0020H,对于指令ADD DL,[BX][SI],其源操作数的偏移量为多少?
答案:EA = (BX)+(SI)+ 0 = 0120H
4.假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=?
答案:每执行一条PUSH指令,(SP)被减2,因此执行5条PUSH指令后,(SP)=0060H – 5*2 =0060H -000AH = 0056H
5.对于一个十进制数– 80,其二进制补码表示形式为多少?
答案:首先求得二进制真值为– 01010000B,负数补码为变反加1的结果,即 10110000B
三.排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断该指令有无语法错
误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。
1.MOV CS, 0600H
参考答案:错误,不能使用MOV指令传递立即数给CS
2.PUSH 074CH
参考答案:错误,单操作数指令不能使用立即数
3.ADD AX, CL
参考答案:错误,寄存器长度不匹配
4.OR BX,[CX]
参考答案:错误,CX不能用于存储器寻址
四.程序分析题(本大题共6小题,每小题5分,共30分)每小题列出了一段小的程序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果。(寄存器中的内容请使用十六进制形式
给出)
1.阅读如下程序片段
MOV AL,4CH
MOV BL,86H
ADD AL,BL
执行上述程序片段后,(AL)= 0D2H (1分),(BL)= 86H (1分),
CF= 0 (1分),OF= 0 (1分),PF= 1 (1分)
指示汇编程序如何汇编的指令2.阅读如下程序片段
MOV AL,0F3H
MOV DL,0C4H
ADD AL,DL
AND AL,0FH
执行上述程序片段后,(AL)= 07H (1分),(AF)= 不确定(1分),CF= 0 (1分),OF= 0 (1分),PF= 0 (1分)
注意:逻辑运算指令中,除NOT指令外,CF、OF均置0,AF为不确定
3.阅读如下程序片段
MOV AL,6FH
MOV CL,04H
ROL AL,CL
执行上述程序片段后,(AL)= 0F6H (2分),(CL)= 04H (1分),
CF= 0 (1分),OF= 不确定(1分)
注意:移位指令中,当指令的移位次数大于1时,OF为不确定
4.阅读如下程序片段
MOV AX,0632H
MOV BX,0C202H
SUB AL,BL
SBB AH,BH
INC AX
执行上述程序片段后,(AX)= 4431H (2分),(CF)= 1 (2分),
OF= 0 (1分)
注意:INC指令不影响CF标志位
5.阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28H
MOV BX,0024H
LEA BX,[BX]
AND BX,0FFH
ADC BX,[BX]
执行上述程序片段后,(BX)= 287AH (3分),(CF)= 0 (2分),
OF= 0 (1分)
6.阅读如下程序片段,假设(SP)=0064H
MOV AX,0001H
MOV BX,0002H
PUSH AX
PUSH BX
POP AX
POP BX
执行上述程序片段后,(AX)= 0002H (2分),(BX)= 0001H (2分),(SP)= 0064H (1分)
五.程序设计题(本大题共3小题,每小题5分,共15分)(注:不是唯一答案)
1.试编写一程序片段,实现BL高4位与低4位相互交换(5分)
参考解答:
MOV CL, 4
ROL BL, CL
2.试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2的功能(AX中的数据理解为补码)(5分)
参考解答:
MOV BX, AX
MOV CL, 2
SAL AX, CL
ADD AX, BX
ADD AX, 14
SAR AX, 1
3.试编写一完整程序,实现88242567H与0A435C218H两个32位无符号数相加的功能。(要求编写完整源程序,含程序框架)(5分)
参考解答:
DATA SEGMENT
VAR1 DD 88242567H
VAR2 DD 0A435C218H
VAR3 DD ?
DATA ENDS
STACK1 SEGMENT STACK
DW 40H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
BEGIN: MOV AX, DATA
MOV DS, AX
MOV AX, VAR1
ADD AX, VAR2
MOV VAR3, AX
MOV AX, VAR1+2
ADC AX, VAR2+2
MOV VAR3+2, AX
MOV AH, 4CH
INT 21H CODE ENDS
END BEGIN
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论