汇编语言程序题? 20个简单汇编语言程序
- 《汇编语言程序设计》模拟题
- 汇编语言模拟试题
- 汇编语言程序设计填空题和问答题部分
- 汇编语言程序设计练习题1. 逆序输出字符串“BASED ADDRESSING”。 2. 从键盘上输入2 个数,求出它们的和。
《汇编语言程序设计》模拟题
做一下选择题
1,cx
2, 0号中断
3,字 word
4,bx=4336H cx=0136H 执行后bx=bx-cx=4200H
结果为正 sf=0 zf=0(不为零) CF=0(没借位) of=0
5,fees中有100+1=101个字型数据,从0~100标号 A
仅供参考.
汇编语言模拟试题
1.逻辑地址 源程序经过汇编或编译后,形成目标程序,每个目标程序都是以0为基址顺序进行编址的,原来用符号名访问的单元用具体的数据——单元号取代。这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。
2.物理地址 内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可惟一标识一个存储单元,称为内存地址(或物理地址)。
3.标志寄存器 用来保存程序执行结果或者状态的寄存器,由各个标志位组成,标志寄存器中的标志位分两种类型:状态标志位和控制标志位,分别用来反应结果状态或控制程序执行的。
状态标志位常用的有ZF(零标志位)、SF(符号标志位)、PF(奇偶标志位)、CF(进位标志位)、OF(溢出标志位)、AF(辅助进位标志位);
控制标志位常用的有DF(方向标志位,用于串处理操作方向控制的)、TF(单步执行的跟踪标志位)、IF(中断允许标志位)。
4.存储器寻址方式 在指令中,有时要寻找操作数的地址,有时要寻找转移地址(如转移指令、CALL指令等),这些寻找地址的方式就称为寻址方式。8086微处理器寻找操作数地址有七种方式:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址等;寻找转移地址的方式有段内寻址和段间寻址,它们又分为段内直接、段内间接、段间直接、段间间接寻址等。
5.补码 补码是计算机底层运算中,对运算符的一种表示方法。主要功能是将减法的运算转化为加法运算。
简单的说对于一个二进制数来说,正数的话它的原码,反码,补码都一样.
如果机器数是负数,反码是对它的原码(符号位除外)各位取反而得到的.
补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。
二.计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算结果。
1.将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?
(1100100)2, (64)16
2.假设(DS)=0B00H,(BX)=0210H,对于指令MOV DS:120H[BX],AL,其目的操作数的物理地址为多少?
0B00H*10H+210H+120H = B330H
3.假设(BX)=0210H,(DI)=0060H,对于指令ADD DL,[BX][DI],其源操作数的偏移量为多少?
这道题说的不明白,偏移量是相对于谁的,如果相对于段,210H+60H=270H
如果相对于基址,就是DI,60H
4.假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=?
执行push,指针减小,每次占用两个字节,60H-2*5 = 56H
5.对于一个十进制数 – 65,其二进制补码表示形式为多少?
(65)2 = 1000001,取反0111110,加一0111111,加符号10111111
三. 排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。
1.PUSH 5588H ;push的源操作数不能是立即数
2.MOV DS, 1720H ;给段寄存器赋值不能给立即数
3.ADD AX, CL ;AX是16位的,CL是8位的,不能相加
4.AND AX,[DX] ;DX不是基址寄存器
四.程序分析题(本大题共6小题,每小题5分,共30分)每小题列出了一段小的程序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果。(寄存器中的内容请使用十六进制形式给出)
1.阅读如下程序片段
MOV AL,4CH
MOV BL,0B5H
ADD AL,BL
执行上述程序片段后,(AL)= 1H,(BL)=B5H ,
CF= 1,OF=0 ,PF=0 .
2.阅读如下程序片段
MOV AL,0F3H
MOV DL,0C4H
ADD AL,DL
AND AL,0FH
执行上述程序片段后,(AL)=7 ,(AF)=0 ,CF=0 ,OF=0 ,PF=1.
3.阅读如下程序片段
MOV AL,7EH
MOV CL,04H
ROL AL,CL
执行上述程序片段后,(AL)= e7H,(CL)=4 ,
CF=1 ,OF=0 .
4.阅读如下程序片段
MOV AX,0632H
MOV BX,0C202H
SUB AX,BX
INC AX
执行上述程序片段后,(AX)=4431H ,(CF)= 1,
OF= 0.
5.阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28H
MOV BX,0024H ;bx = 24h
LEA BX,[BX] ;bx = 56h,cf=1
OR BX,0 ;bx=56h, cf=0
ADC BX,[BX] ;应该加56H那个单元的内容
执行上述程序片段后,(BX)= 56H+[01056H],(CF)=取决于[01056H]是多少,
OF= 取决于[01056H]是多少,.
这道题如果不是你贴错了,就是出题的搞错了
6.阅读如下程序片段,假设(SP)=0064H
MOV AX,0001H
MOV BX,0002H
PUSH AX
PUSH BX
POP CX
POP BX
执行上述程序片段后,(AX)= 1,(BX)=1 ,
(SP)= 64H,
五.程序设计题(本大题共2小题,第一小题7分,第二小题8分,共15分)
1.试编写一程序片段,实现BL高4位与低4位相互交换(7分)
push ax
mov al,bl
shl bx,1
shl bx,1
shl bx,1
shl bx,1
and al,f0
shr ax,1
shr ax,1
shr ax,1
shr ax,1
and al,0f
or bl,al
pop ax
2.试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2的功能(AX中的数据理解为补码)(8分)
push bx
mov bx,ax
shl ax,1
shl ax,1
add ax,bx
add ax,14
shr ax,1
pop bx
汇编语言程序设计填空题和问答题部分
1.为零
2.偏移
3.4位
4.group name db(前两个不太确定,你再查一下吧)
5.CX
6.CALL RET
7.MACRO ENDM 宏体
8. 设DS=2200H,BX=1000H,SI=0100H,偏移量D=0A2B1H,试计算出下列各种寻址方式下的有效地址,填入括号中。
A.使用D的直接寻址 (0A2B1H )
B.使用BX的寄存器间接寻址 (1000H)
C.使用BX和D的寄存器相对寻址(0B2B1H)
D.使用BX、SI和D的相对基址变址寻址 (0B3B1H)
E.使用BX、SI的基址变址寻址(1100H)
9.结束返回
10.CLD STD
11.指出下一条将要被执行的指令在代码段中的偏移地址
12.0~255 00H~FFH -128~127 80H~7FH
13.提供段地址
14.软件系统和硬件系统
15.SS
16.DI
17.初始化部分 循环部分 控制部分(这个也要查一下你们的教材,不同的教材可能不一样)
18.符号地址(这个不确定啊,查查教材吧)
19.数据段—ds 代码段—cs 附加段—es 堆栈段—ss
20.二进一
1.mov ax,10
mov bl,10
mov cl,4
2.立即寻址
变址寻址
寄存器直接寻址
基址变址寻址
隐含寻址(或称为固定寻址)
问题补充:
1.C
2.D
汇编语言程序设计练习题1. 逆序输出字符串“BASED ADDRESSING”。 2. 从键盘上输入2 个数,求出它们的和。
DATA SEGMENT
STRING DB 'BASED ADDRESSING'
LEN EQU $-STRING ;求字符串长度
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA SI,STRING
ADD SI,LEN
DEC SI ;SI指到字符串的最后一个字符
MOV CX,LEN ;CX中为字符串长度,也就是要显示的字符个数,用来作循环次数
S0:
MOV AH,02H
MOV DL,[SI]
INT 21H
DEC SI ;每显示一个,SI减1
LOOP S0
MOV AX,4C00H
INT 21H
CODE ENDS
END START
第2题:几位数呢?如果一位数还算简单,否则就有点复杂了.下面是一位数的加法.
DATA SEGMENT
NUM DB ?,? ;用来接收键盘输入的数据
SUM DB ? ;用来存和
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,2
LEA SI,NUM
S0:
MOV AH,01H
INT 21H
CMP AL,'9'
JBE NEXT
SUB AL,07H
NEXT:
SUB AL,30H
MOV [SI],AL
INC SI
LOOP S0
LEA SI,NUM
MOV AL,[SI]
ADD AL,[SI+1]
MOV SUM,AL
MOV AX,4C00H
INT 21H
CODE ENDS
END START