汇编语言大题.docx
- 文档编号:23281277
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:10
- 大小:19.17KB
汇编语言大题.docx
《汇编语言大题.docx》由会员分享,可在线阅读,更多相关《汇编语言大题.docx(10页珍藏版)》请在冰豆网上搜索。
汇编语言大题
1.6若机器字长为16位,其无符号数表示范围是多少?
带符号数表示范围是多少?
分别用十进制和十六进制表示。
答:
无符号数:
0~65535,0000H~FFFFH;带符号数:
-32768~+32767,8000H~7FFFH
1.9写出下列算式的二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?
答:
(156+63=01110111B,CF=0,SF=0,ZF=0,OF=0
(283-45=00100110B,CF=1,SF=0,ZF=0,OF=0
(3-74+29=11010011B,CF=0,SF=1,ZF=0,OF=0
(4-92-37=01111111B,CF=1,SF=0,ZF=0,OF=1
2.98086CPU的地址线为20根,寻址空间为1MB。
最少可划分为多少个逻辑段?
最多呢?
答:
最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节
2,18已知堆栈区大小为512字节,栈底单元的物理地址为15230H。
将两个字入栈保存后,当前栈指针所指单元的物理地址是多少?
堆栈区中还能保存多少个数据?
答:
当前栈指针所指单元的物理地址是1522CH。
堆栈区中还能保存254个字。
2.21在DEBUG下,要将寄存器CX的值修改为100H,应该执行什么命令?
答:
执行RCX,然后输入100
2.22在DEBUG下,怎样将数据段的0号~4号字节单元填入'a'、'b'、'c'、'd'?
答:
执行EDS:
0?
a?
?
b?
?
c?
?
d?
3.8根据题目要求,写出相应的汇编指令
(1把BX寄存器的值传送给AX
(2将立即数15送入CL寄存器
(3用BX寄存器间接寻址方式将存储单元中的字与AX寄存器的值相加,结果在AX中
(4把AL中的字节写入用基址变址寻址的存储单元中
(5用SI寄存器和位移量VALUE的寄存器相对寻址方式,从存储单元中读出一个字送入寄存器AX
(6将AX中的数与偏移地址为2000H存储单元的数相减,结果在AX中
答:
(1MOVAX,BX(2MOVCL,15(3ADDAX,[BX]
(4MOV[BX+SI],AL(5MOVAX,VALUE[SI](6SUBAX,DS:
[2000H]
3.10在数据寻址方式中,哪种寻址方式的操作数与指令一起存放在代码段?
答:
立即寻址方式中操作数(立即数和指令一起存放在代码段中。
4.24编程序。
将键盘输入的小写字母变为大写字母显示在屏幕上。
答:
.modelsmall
.code
start:
movah,1;键盘输入
int21h
subal,20h;变为大写
movdl,al
movah,2
int21h
movah,4ch
int21h
endstart
4.25X和Y都是字节型数据,编写将两数相加的结果显示出来的程序段答:
.modelsmall
.data
xdb12h
ydb34h
.code
start:
movax,@data
movds,ax
moval,x
addal,y;结果为46H
movah,al;AH=46H
andal,0fh;AL=06H
movcl,4
rolah,cl;AH=64H
andah,0fh;AH=04H
addax,3030h;AX=3436H
movbx,ax
movdl,bh;显示4
movah,2
int21h
movdl,bl;显示6
int21h
movah,4ch
int21h
endstart
4.26编写程序,建立一个0~9的平方根表,查表可得某数的平方根。
答:
datasegment
xdb'0.000','1.000','1.414','1.732','2.000'
db'2.236','2.449','2.646','2.828','3.000'建;立字符表ydb5dup(?
;存放查到平方根
udb3;要查的数
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
moval,u;要查的数
movcl,5
mulcl;u*5=15(号单元开始
movah,0
movbx,ax;地址保存到bx
movsi,0
let1:
moval,x[bx];取出平方根数字
movy[si],al;存入y
incsi
incbx
looplet1;循环取出5次
movah,4ch
int21h
codeends
endstart
4.30用简化的程序格式编程序,在屏幕的5行12列上显示红底白字的字符串“Come”作业(本,仿例4-7
5.11已知(BX=7890H,写出指令实现逻辑左移2位。
请问哪个标志位改变了?
答:
进位标志CF=1
5.15写出将AL.4清零的指令。
(AL中除第4位外的其他位保持不变。
答:
ANDAL,11011111B
5.29字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO单元。
答:
DATA1SEGMENT
MDW21,-34,32,112,-324,0,76,0,48,50
POSIDW?
NEGADW?
ZERODW?
DATA1ENDS
CODE1SEGMENT
ASSUMECS:
CODE1,DS:
DATA1
START:
MOVAX,DATA1
MOVDS,AX
MOVCX,10
LEASI,M
AGAIN:
CMPWORDPTR[SI],0
JLLOWER
JEEQUAL
INCPOSI
JMPLPP1
LOWER:
INCNEGA
JMPLPP1
EQUAL:
INCZERO
LPP1:
ADDSI,2
DECCX
JNZAGAIN
MOVAH,4CH
INT21H
CODE1ENDS
ENDSTART
6.11写出下列程序段的执行结果
BUFFDB10,22,14,6,31
TOTALDB?
MOVBX,OFFSETBUFF
MOVCX,TOTAL-BUFF
MOVAL,0
AA1:
ADDAL,[BX]
INCBX
LOOPAA1
MOVTOTAL,AL答:
累加和TOTAL=83
6.12分析下列程序段的功能
XDB2,-3,15,0,9,4
LEABX,X
MOVCX,6
MOVAX,0
AA2:
MOVAL,[BX]
CMPAL,0
JNENEXT
INCAH
NEXT:
INCBX
LOOPAA2
答:
循环统计X中0的个数
7.10为什么要进行现场保护?
怎样做现场保护?
答:
(1在编写子程序时要注意一个问题,如果主程序用到某些寄存器保护数据,转到子程序后,这些寄存器有可能被改写,或者某些指令必须用特定的寄存器,如乘法、除法指令必须用AX或AL,循环和移位指令必须用CX或CL;还有一些场合需要保存标志寄存器的内容等。
因此在进入子程序时,先要把这些寄存器保存起来,称为现场保护。
(2一般采用PUSH指令入栈保存的方法。
在子程序返回主程序之前,将堆栈中保存的内容用POP指令弹出到相关的寄存器中,称为恢复现场。
7.12阅读下列子程序,解释该程序的功能。
SUBR1PROCNEAR
PUSHAX
PUSHBX
MOVAL,X
ADDAL,BL
MOVY,AL
POPBX
POPAX
RET
SUBR1ENDP
答:
功能:
两个字节数相加。
X和BL相加保存到Y。
7.13解释下列子程序的功能。
SUBR2PROCNEAR
MOVSI,0
LET1:
MOVAH,1
INT21H
CMPAL,0DH
JZOUT1
MOVKEY[SI],AL
INCSI
JMPLET1
OUT1:
RET
SUBR2ENDP
答:
功能:
键盘输入的字符保存到KEY单元中,直到按回车为止
7.14给出下列子程序的功能和执行结果
XDB3AH
SUBR3PROCNEAR
MOVAL,X
MOVBL,10
MOVDX,0
LETE:
MOVAH,0
DIVBL
MOVDL,AH
PUSHDX
CMPAL,0
JNZLETE
RET
SUBR3ENDP
答:
功能:
将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数将0008H入栈,再将0005H入栈,结果为58。
8.7请举例说明宏的变元是操作数和变元是操作码的用法。
(P174P175
8.9在宏定义中可以使用标号吗?
是否需要说明?
8.16分析下列宏定义,指出它的作用
EXM1MACROX1
MOVAH,X1
INT21H
ENDM
答:
宏的作用:
DOS功能调用。
功能号用哑元指出。
8.17解释下列宏的功能。
EXM2MACROA,B,C
MOVAX,A
ADDAX,B
MOVC,AX
ENDM
答:
宏的作用:
两个操作数相加,结果保存在第3个数中。
8.18指出下列宏的作用。
EXM3MACROC1
MOVAH,2MOVDL,C1INT21HENDM答:
宏的作用:
DOS的2号显示功能。
8.19分析下列宏,指出它的作用。
EXM4MACROA1,A2VALUEDWA1DUP(A2ENDM答:
宏的作用:
定义VALUE数组,数组长度和初值由哑元指出。
8.20下列宏是一个分支程序,宏定义中缺少标号的处理。
请添加,并指出宏的功能。
EXM5MACROB1,B2MOVAL,B1SUBAL,B2JNSLETT1NEGALLETT1:
RETENDM答:
缺少标号定义LOCALLETT1。
宏的作用:
两个哑元相减,结果为负则求补。
9.2硬件中断发生时,CPU怎样获知?
CPU如何处理硬件中断?
9.4什么是中断向量?
什么是中断向量表?
80X86系统的中断向量表在哪儿?
答:
(1)在每个中断类型相对应的中断处理子程序都有一个入口地址,即该中断子程序第1条指令的逻辑地址,该入口地址称为中断向量。
(2)用于保存所有的中断向量。
(3)P200图9-1*9.580X86系统可以有多少个中断类型?
中断类型号是如何划分的?
答:
(1)80X86系统提供了256个中断类型(可用1字节表示),类型号为0-FFH
(2)中断类型代表了不同的中断源,而系统对中断类型的分配按照一定的规则划分,即0-4号为内;中断,5号为用户访问中断;8-0FH号为8259A中断控制器控制的8个硬件中断;10H-1AH号为BIOS基本输入/输出系统专用;1BH、1CH号为用户访问中断;20H-27H号为DOS中断;40-5F、67-77、BD-FF为硬盘参数、系统BASIC等。
9.8中断过程和子程序调用过程一样吗?
有何异同?
9.40
(1)编写80H号中断处理程序。
中断发生时,将BX寄存器内容以二进制形式显示。
(2)编写80H号中断处理程序。
中断发生时,显示彩色的0-9十个数字。
答:
(2)assumecodestart:
movax,csmovds,axmovsi,offsetdispmovax,0moves,axmovdi,200hmovcx,offsetdisp_end-offsetdispcs:
codesegment
cldrepmovsb;movax,0moves,axmovwordptres:
[80h*4],200hmovwordptres:
[80h*4+2],0;int80hmovah,4chint21hdisp:
movax,0b800hmoves,axmovdi,160*12+40*2movdl,30hmovcx,10s:
inal,40handal,0fhxchgah,almoval,dlmoves:
[di],axadddi,2incdlloopsiretdisp_end:
nopcodeendendssta;rt在此处加上此句就可以啦;;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言