汇编语言课后习题答案_第1页
汇编语言课后习题答案_第2页
汇编语言课后习题答案_第3页
汇编语言课后习题答案_第4页
汇编语言课后习题答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——汇编语言课后习题答案习题一

1分别将以下二进制数作为无符号数和带符号数转换为十进制和十六进制数11010011,01110111,10000011,00101111,10101010查看正确答案

无符号数:11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH

带符号数:11010011=-45=D3H,01110111=+119=77H,10000011=-125=83H,00101111=+47=2FH,10101010=-86=AAH2十六进制运算

1A52H+4438H,3967H-2D81H,37H×12H,1250H×4H查看正确答案

5E8AH,0BE6H,3DEH,4940H

3将十进制数变为8位补码,做运算(结果用二进制、十六进制、十进制表示)29+53,73-24,-66+82,-102-15查看正确答案

00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH=-117

4用压缩BCD码计算(结果用二进制、BCD码、十进制表示)29+53,73-24,66+18,132+75查看正确答案

00101001+01010011=01111100+00000110=10000010=82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=207

5符号位扩展(字节扩展为字,字扩展为双字)20A3H,94H,3456H,7FH,EC00H查看正确答案

000020A3H,FF94H,00003456H,007FH,FFFFEC00H

6若机器字长为16位,其无符号数表示范围是多少?带符号数表示范围是多少?分别用十进制和十六进制表示。查看正确答案

无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH7写出以下十六进制数所能代表的数值或编码:(1)38H(2)FFH(3)5AH(4)0DH

查看正确答案

(1)38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2)FFH等于十进制数-1,是带符号数-1的补码,无符号数为255

(3)5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4)0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码

8将以下十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码:(1)108(2)46(3)-15(4)254查看正确答案

(1)108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H

(2)46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3)–15=11110001B=F1H,补码11110001B,ASCII码2D3135H

(4)254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H

9写出以下算式的二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?(1)56+63(2)83-45(3)-74+29(4)-92-37查看正确答案

(1)56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2)83-45=00100110B,CF=0,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

10查表,指出ASCII码0DH、0AH、07H、1BH、20H、40H、50H、70H对应的控制字符。查看正确答案

回车、换行、响铃、ESC键、空格键、@、P、p习题二1

写出冯·诺依曼计算机的基本特点。

查看正确答案

采用存储程序方式,即程序和数据放在同一个存储器中,程序指令和数据2如何解决内存速度与CPU速度不匹配问题。3写出计算机总线的分类与作用。

4简述8086CPU寄放器的分组及各自的作用。5标志寄放器中都有哪些标志位与计算结果有关?6简述规律地址与物理地址的概念,两者的关系。7存储器为什么要分段?如何分段。

88086系统把存储器分为哪四种类型的段?各自的特点是什么。

98086CPU的地址线为20根,寻址空间为1MB。最少可划分为多少个规律段?最多呢?查看正确答案

最少划分为16个规律段,最多划分为65536个规律段(每段16个字节)10在四种类型的段中寻常使用哪些寄放器表示规律地址?查看正确答案

CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP

11字节单元和字单元如何区分?若给出一个地址,如何知道要访问的是字节单元还是字单元?查看正确答案

字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。12偶地址单元和奇地址单元在保存数据上有区别吗?查看正确答案

对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。13有一个32K字节的存储区,首地址是3302:5AC8H,写出其首单元和末单元的物理地址。查看正确答案

首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H14什么是有效地址?如何获得有效地址。

15存储单元地址和内容表示如下,请画出存储单元存放形式。

(1)(1280A)=3456H(2)(20231H)=4DH(3)(33450H)=37A520D1H16根据规律地址计算出物理地址,并解释规律地址与物理地址的对应关系。(1)2389:3DE9H(2)1230:EC92H(3)14D9:C202H查看正确答案

(1)物理地址=27679H(2)物理地址=20F92H(3)物理地址=20F92H

(2)和(3)的物理地址是一样的。说明规律地址不唯一,多个规律地址可对应到同一个物理单元上。17给出段地址和偏移地址如下,计算出对应的物理地址。(CS)=54C3H,(ES)=2569H,(DS)=1200H,(SS)=4422H,(BX)=5678H,(SP)=9945H,(IP)=0E54H,(DI)=63B1H查看正确答案

代码段CS:IP的物理地址=55A84H堆栈段SS:SP的物理地址=4DB65H数据段DS:BX的物理地址=17678H附加段ES:DI的物理地址=2BA41H

18已知堆栈区大小为512字节,栈底单元的物理地址为15230H。将两个字入栈保存后,当前栈指针所指单元的物理地址是多少?堆栈区中还能保存多少个数据?查看正确答案

当前栈指针所指单元的物理地址是1522CH。堆栈区中还能保存254个字。19写出修改当前数据段200H开始的数据区数据的DEBUG命令。查看正确答案执行E200

20对当前代码段从100H开始反汇编的DEBUG命令是什么?查看正确答案执行U100

21在DEBUG下,要将寄放器CX的值修改为100H,应当执行什么命令?查看正确答案

执行RCX,然后输入100

22在DEBUG下,怎样将数据段的0号~4号字节单元填入'a'、'b'、'c'、'd'?查看正确答案

执行EDS:0?a??b??c??d?习题三

1名词解释:零地址指令,一地址指令,二地址指令。2分别写出与数据有关的7种寻址方式并举例说明。

3已知(BX)=1290H,(SI)=348AH,(DI)=2976H,(BP)=6756H,(DS)=2E92H,(ES)=4D82H,(SS)=2030H,请指出以下指令的寻址方式,并求出有效地址EA和物理地址:MOVAX,BXMOVAX,1290HMOVAX,[BX]MOVAX,DS:[1290H]MOVAX,[BP]MOV[DI][BX],AXMOVES:[SI],AX查看正确答案

MOVAX,BX源操作数为寄放器寻址,EA无,物理地址无MOVAX,1290H马上寻址,EA无,物理地址无

MOVAX,[BX]寄放器间接寻址,EA=1290H,物理地址=2FBB0HMOVAX,DS:[1290H]直接寻址,EA=1290H,物理地址=2FBB0HMOVAX,[BP]寄放器间接寻址,EA=6756H,物理地址=26A56H

MOV[DI][BX],AX目的操作数为基址变址寻址,EA=3C06H,物理地址=32526HMOVES:[SI],AX寄放器间接寻址,EA=348AH,物理地址=50CAAH4寄放器间接寻址方式可以使用哪些寄放器作为间址寄放器?5马上寻址方式和寄放器寻址方式的操作数有物理地址吗?6什么是段超越?段超越前缀代表什么?7请指出以下指令的错误:MOVAX,[CX]MOVAL,1200HMOVAL,BXMOV[SI][DI],AXMOVES:[DX],CXMOV[AX],VALUEMOVCOUNT,[SI]

查看正确答案

MOVAX,[CX]错。CX不能为间址寄放器MOVAL,1200H错。马上数超出8位寄放器范围MOVAL,BX错。两个操作数不匹配

MOV[SI][DI],AX错。两个变址寄放器不能在一起MOVES:[DX],CX错。DX不能为间址寄放器MOV[AX],VALUE错。AX不能为间址寄放器MOVCOUNT,[SI]错。两个操作数不能都是存储单元8根据题目要求,写出相应的汇编指令:(1)把BX寄放器的值传送给AX(2)将马上数15送入CL寄放器

(3)用BX寄放器间接寻址方式将存储单元中的字与AX寄放器的值相加,结果在AX中(4)把AL中的字节写入用基址变址寻址的存储单元中

(5)用SI寄放器和位移量VALUE的寄放器相对寻址方式,从存储单元中读出一个字送入寄放器AX(6)将AX中的数与偏移地址为2000H存储单元的数相减,结果在AX中查看正确答案

(1)MOVAX,BX(2)MOVCL,15(3)ADDAX,[BX]

(4)MOV[BX+SI],AL(5)MOVAX,VALUE[SI](6)SUBAX,DS:[2000H]

9写出用以下寻址方式将存储单元X中的第3个字取出,AX与其相加再放入Y单元的指令序列。(1)直接寻址(2)寄放器相对寻址(3)基址变址查看正确答案(1)ADDAX,[X+4]MOVY,AX(2)MOVBX,4ADDAX,X[BX]MOVY,AX(3)MOVBX,4MOVSI,OFFSETXADDAX,[BX+SI]MOVY,AX

10在数据寻址方式中,哪种寻址方式的操作数与指令一起存放在代码段?查看正确答案

马上寻址方式中操作数(马上数)和指令一起存放在代码段中。习题四

1汇编语言程序有什么特点?什么是源程序?2简要说明从源程序到可执行程序的操作过程。

3什么是伪指令?汇编指令与伪指令有何区别?写出4种常用的伪指令。

MOVBL,6AAD;除法调整DIVBL

MOVBH,AH;余数保存在BHANDAX,000FHAAA;商调整MOVZ4,AX;保存商

23编程序。从键盘输入一个数字,去掉ASCII码后保存到BUFF单元。查看正确答案.modelsmall.databuffdb?.codestart:

movax,@datamovds,ax

movah,1;键盘输入int21h

subal,30h;去掉ASCII码movbuff,almovah,4chint21hendstart

24编程序。将键盘输入的小写字母变为大写字母显示在屏幕上。查看正确答案.modelsmall.codestart:

movah,1;键盘输入int21h

subal,20h;变为大写movdl,almovah,2int21hmovah,4chint21hendstart

25X和Y都是字节型数据,编写将两数相加的结果显示出来的程序段。查看正确答案.modelsmall.dataxdb12hydb34h.codestart:

movax,@datamovds,axmoval,x

addal,y;结果为46Hmovah,al;AH=46Handal,0fh;AL=06Hmovcl,4

rolah,cl;AH=64Handah,0fh;AH=04Haddax,3030h;AX=3436Hmovbx,axmovdl,bh;显示4movah,2int21h

movdl,bl;显示6int21hmovah,4chint21hendstart

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;要查的数dataendscodesegment

assumecs:code,ds:data

start:movax,datamovds,ax

moval,u;要查的数movcl,5

mulcl;u*5=15(号单元开始)movah,0

movbx,ax;地址保存到bxmovsi,0let1:

moval,x[bx];取出平方根数字movy[si],al;存入yincsiincbx

looplet1;循环取出5次movah,4chint21hcodeendsendstart

27编写查表程序。建立一个班级姓名表,给出学号,可显示出其姓名。查看正确答案.modelsmall.data

x1db'zhangyan$';姓名为10个字符宽度x2db'lili$'x3db'wanglan$'x4db'zhaoxue$'x5db'lijiang$'udb3;要查的学号.codestart:

movax,@datamovds,ax

moval,u;给出学号movcl,10

mulcl;u*10=30(号单元开始)movah,0

movdx,ax;地址保存到dxmovah,9;9号功能显示字符串int21hmovah,4chint21hendstart

28编程实现公式计算Z=X/4+16Y。查看正确答案.modelsmall.dataxdb4ydb6zdb?.codestart:

movax,@datamovds,axmoval,x;movcl,2saral,cl;X/4movcl,4movbl,ysalbl,cl;16Yaddal,bl;X/4+16Ymovz,almovah,4chint21hendstart

29编写程序段,将AL中的数乘以6,与CL相减后再除以3;把商保存到Y单元,余数保存到Y+1单元。查看正确答案.modelsmall.dataydb?,?.codestart:

movax,@data

movds,axmoval,3;设al=3movcl,6mulcl;al*6movcl,4;设cl=4subal,cl;相减movbl,3idivbl;/3movy,al;商movy+1,ah;余数movah,4chint21hendstart

30用简化的程序格式编程序,在屏幕的5行12列上显示红底白字的字符串“Come〞。习题五

1转移指令分为哪两大类?转移指令的操作码和操作数如何表示?2写出与转移地址有关的寻址方式。

3根据标志位转移的指令有哪些?执行什么操作时可以改变标志?4简述CPU实现分支的过程。

5在短转移格式下,指令跳转的范围是多少?6在比较转移指令之前可以用什么指令进行判断?

7比较转移指令为什么要分为无符号数比较和带符号数比较两类?8汇编语言可以控制和改变二进制某一位。有哪些指令可执行位操作?9TEST指令是如何实现判断的?请举例说明。10移位指令影响标志位吗?影响哪些标志位?

11已知(BX)=7890H,写出指令实现规律左移2位。请问哪个标志位改变了?查看正确答案进位标志CF=1

12分析以下程序段,给出执行结果:MOVAX,1234HMOVCL,3SARAX,CLANDAX,0FHADDAL,30HMOVDL,ALMOVAH,2INT21H

AA1:ADDAL,[BX]INCBXLOOPAA1MOVTOTAL,AL查看正确答案累加和TOTAL=83

12分析以下程序段的功能。XDB2,-3,15,0,9,4……LEABX,XMOVCX,6MOVAX,0

AA2:MOVAL,[BX]CMPAL,0JNENEXTINCAHNEXT:INCBXLOOPAA2查看正确答案

循环统计X中0的个数

13判断以下程序段能否完成给定功能。如有错误,请指出并改正。(1)统计AL中1的个数。要求AL保持原值。MOVBL,0MOVCX,8BB1:RCLAL,1JNCNEXTINCBL

NEXT:LOOPBB1

(2)在ALPHA中查找字母〞T〞,找到后退出循环。ALPHADB“ERTYU〞……

MOVBX,OFFSETALPHAMOVCX,5BB2:CMP[BX],?T?LOOPNEBB2查看正确答案

(1)将BB1:RCLAL,1改为BB1:ROLAL,1(2)将BB2:CMP[BX],?T?LOOPNEBB2改为:DECBXBB2:INCBXCMP[BX],?T?LOOPNEBB2

14源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STRG1传送到STRG2的功能。

15写出计算Y=1×2+3×4+5×6+7×8+9×10的程序段。查看正确答案

计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案:MOVAL,1MOVBL,2MOVDX,0MOVCX,5AA1:MULBLADDDX,AXINCBLMOVAL,BLINCBLLOOPAA1

16写程序。查找CATT表中的字符〞@〞,找到后将SIGN单元置1,否则SIGN单元置0。查看正确答案

写程序段。查找CATT表中的字符〞@〞,找到后将SIGN单元置1,否则SIGN单元置0。cattdb'asd@ddd'signdb?……

movax,extramoves,axmovsign,0moval,'@'leadi,cattcldmovcx,7repnzscasb

jcxzneemovsign,1nee:movah,4chint21h

17写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。查看正确答案

写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。valuedw2,-4,-5,3,6,6,-8nequ($-value)/2;元素个数……

start:movax,datamovds,axmovcx,nmovbx,0movax,0rept1:

movsi,value[bx];取出元素cmpsi,0

jgelet1;≥0转let1incax;为负数,ax加1let1:addbx,2looprept1

18编程。从键盘输入一个数字,在屏幕上显示出以该数字开始的10个数字串。查看正确答案

从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HMOVCX,10MOVBL,ALREPT1:CMPBL,'9'JLENEXTSUBBL,10NEXT:MOVDL,BLMOVAH,2INT21H

INCBLLOOPREPT1MOVAH,4CHINT21HCODEENDSENDSTART

19编程。比较两个字符串是否一致,统计并显示出一致的字符个数和不同的字符个数。查看正确答案datasegmentbunch1db'stadent'bunch2db'studEnt'dataendscodesegment

assumecs:code,ds:data,es:datastart:movax,datamovds,axmoves,axleasi,bunch1leadi,bunch2

movbx,0;bh=一致的个数,bl=不同的个数movcx,7let1:moval,[si]

cmpal,[di];两字符比较jzequl;一致转equlincbl;不同bl加1jmpout1equl:incbhout1:incsiincdilooplet1

movdl,'n';显示'n',代表不同movah,2hint21h

addbl,30h;加上ASCII码movdl,bl;显示不同的个数

int21h

movdl,'e';显示'e',代表一致int21haddbh,30h

movdl,bh;显示一致的个数int21hmovah,4chint21hcodeendsendstart

20编程。在FOUND字数组中找出最小数存入MIN单元。

21STRI单元存有10个字符的字符串,以0结尾,编程去掉其中的空格符,并将后续字符向前递补。查看正确答案DATASEGMENTSTRDB?SDABFGH0?DATAENDSCODESEGMENT

ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADI,STR

SPACE:MOVCX,10MOVAL,[DI]CMPAL,0JEOUTCMPAL,20HJEDELETEJMPEXITSUBCX,DIMOVSI,DIDELETE:MOVBL,[SI+1]MOV[SI],BLINCSILOOPDELETEEXIT:JMPSPACE

cmpax,0jnzlet1popsipopbxpopaxret

calcuendp

24写出两数相加运算的子程序。25写出两数相减运算的子程序。26写出两数相乘运算的子程序。27写出两数相除运算的子程序。

28写出对AX中的二进制数按位相加子程序。29编写求数组中最大数的子程序。

30编制一个计算数组中所有负数之和的子程序。并利用此子程序分别计算A数组和B数组中的负数之和,结果分别放在SUM1和SUM2单元中。查看正确答案DATASEGMENTADB9,-8,-7,6,5BDB-8,7,6,-5,4SUM1DB?SUM2DB?DATAENDSCODESEGMENT

ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,5

MOVSI,OFFSETACALLLADDMOVSUM1,BLMOVSI,OFFSETBCALLLADDMOVSUM2,BLMOVAH,4CHINT21H

LADDPROCNEARPUSHCX

PUSHAXPUSHSIXORBL,BL

NEXT:MOVAL,[SI]ANDAL,ALJNSJJJADDBL,ALJJJ:INCSILOOPNEXTPOPSIPOPAXPOPCXRET

LADDENDPCODEENDSENDSTART习题八

1宏的作用是什么?宏是一种程序结构吗?2分别解释宏定义、宏调用、宏展开。3宏与子程序的区别是什么?

4宏指令是什么?它能被翻译成机器代码吗?

5写出宏调用的过程和子程序调用的过程,并对二者做一对比。6宏是怎样实现传参的?请与子程序传参进行对比。7请举例说明宏的变元是操作数和变元是操作码的用法。8利用宏可以定义多个存储单元吗?如何定义?9在宏定义中可以使用标号吗?是否需要说明?10在宏定义中能否出现分支程序段?11如何建立宏库?怎样开启宏库?12结构伪操作的作用是什么?

13请举例说明结构预置和结构引用的用法。

14写出重复汇编和条件汇编的主要作用。它们可以生成机器代码吗?15编写多模块程序时,需要参与哪些参数设置?16分析以下宏定义,指出它的作用。EXM1MACROX1MOVAH,X1INT21HENDM

查看正确答案

宏的作用:DOS功能调用。功能号用哑元指出。17解释以下宏的功能。EXM2MACROA,B,CMOVAX,AADDAX,BMOVC,AXENDM查看正确答案

宏的作用:两个操作数相加,结果保存在第3个数中。18指出以下宏的作用。EXM3MACROC1MOVAH,2MOVDL,C1INT21HENDM查看正确答案

宏的作用:DOS的2号显示功能。19分析以下宏,指出它的作用。EXM4MACROA1,A2VALUEDWA1DUP(A2)ENDM查看正确答案

宏的作用:定义VALUE数组,数组长度和初值由哑元指出。

20以下宏是一个分支程序,宏定义中缺少标号的处理。请添加,并指出宏的功能。EXM5MACROB1,B2MOVAL,B1SUBAL,B2JNSLETT1NEGALLETT1:RETENDM查看正确答案

缺少标号定义LOCALLETT1。宏的作用:两个哑元相减,结果为负则求补。21定义宏。完成两个操作数相乘,乘积在第3个操作数中。22分别写出子程序使用的保护现场和恢复现场的宏。23定义键盘输入一个字符的宏指令INPUT。

24定义显示一个字符的宏指令OUTPUT,要显示的字符用哑元DISP表示。25定义宏指令KEY_STR,实现从键盘输入一串字符。26定义宏指令DISPLAY,显示一串字符。

27利用宏指令INPUT和OUTPUT实现将键入的大写字母变为小写显示。查看正确答案程序:.modelsmall.stack100h.codestart:

input;键盘输入

addal,20h;大写变为小写outputal;显示movah,4chint21hendstart

28用宏指令DISPLAY显示存储单元ALPHA中的字符串?Computer?。查看正确答案程序:.modelsmall.data

alphadb?Computer?.codestart:

displayalpha;显示字串movah,4chint21hendstart

29编程序。在键盘输入时,调用宏指令INPUT。对输入的字符判断是否为负号“-〞,是则对X求补,不是则继续输入。查看正确答案程序:.modelsmall.stack100h.codestart:

input;键盘输入

cmpal,?-?jnzstartnegx;求补movah,4chint21hendstart

30编程序。键盘输入两个一位的十进制数,做加法运算。加法结果调整为非压缩的BCD码,并显示出十进制结果(4-8.asm)。要求改用调用宏INPUT和宏OUTPUT实现键盘输入和显示部分。查看正确答案程序:.modelsmall.stack100h.codestart:

input;键盘输入movbl,al

input;输入第2个数addal,blmovah,0

aaa;非压缩BCD码加法调整addax,3030houtputah;显示高位outputal;显示低位movah,4chint21hendstart习题九

1软件中断都有哪些?CPU是如何处理的?

2硬件中断发生时,CPU怎样获知?CPU如何处理硬件中断?3中断的重要性是什么?若没有中断系统,微机能否工作?

4什么是中断向量?什么是中断向量表?80X86系统的中断向量表在哪儿?580X86系统可以有多少个中断类型?中断类型号是如何划分的?6给出一个中断类型号,如何得到其中断向量?

7每个中断类型都有一个中断处理程序吗?中断处理程序在那儿存放?8中断过程和子程序调用过程一样吗?有何异同?9中断返回指令和子程序返回指令作用一样吗?

10子程序可以嵌套调用,中断可以嵌套吗?嵌套的条件是什么?

11如何设计用户自己的中断?都有哪些工作要做?12用什么指令可以设置中断向量?13用什么指令可以读取中断向量?14如何实现中断驻留?15怎样才能触发中断?

16如何设置光标的位置?请举例说明。17写出实现清屏的指令序列。

18用BIOS中断的什么功能可以显示带颜色的字符?19如何读取系统日期和时间?有几种方法可以实现?20定义一个带有哑元的宏,实现在屏幕上开窗口功能。21定义置光标宏,可以通过变元任意设定光标位置。22定义窗口宏,用红底黄字显示一行字符并上卷。23定义读取日期宏。24定义读取时间宏。

25分析以下程序段,指出其功能。movah,06hmoval,0movch,row1movcl,rank1movdh,row2movdl,rank2movbh,colorint10h查看正确答案

在屏幕的row1、rank1到row2、rank2开窗口,清窗口,设置字符颜色为color。26解释以下程序的作用。movah,2movdh,5movdl,10movbh,0int10h查看正确答案

将光标设置在5行10列上。27以下宏的作用是什么?entermacromovah,2movdl,0dh

int21hmovdl,0ahint21hendm查看正确答案回车换行宏。

28写出以下程序段的功能。reptt2:movah,00hint1ah

movhigher1,cxmovlower1,dxcmpdx,91jlreptt2查看正确答案

读取时钟计数器当前计数值,cx保存高位,dx保存低位;判断计数是否到91次(5秒),没到,继续循环读取,到5秒后做下面内容。

29以下程序的作用是什么?试用直接写中断向量表的方式改写。movdx,offsetwin_timemovax,segwin_timemovds,axmoval,1chmovah,25hint21h查看正确答案

设置1CH号中断的中断向量(win_time),将其保存到中断向量表中。30编程序。在屏幕上0页7行13列显示蓝底黄字的字符串“Windows〞。31编程序。清屏后显示出一串字符,在下一行上可照样输入。32编写在窗口内显示3行内容的菜单程序。33编写在窗口中显示当前时间的程序。

34编程实现在窗口中将键盘输入的小写字母加密后显示出来。提醒:可在字母上加上某数做加密。查看正确答案程序如下:

include9-3.mac;宏库.modelsmall.data

letterdb'InputLetter:$'contdb?.codestart:

movax,@datamovds,axclearsc;清屏clearsw;窗口清屏reptt:;置显示光标movah,2

movdh,11;在11行30列显示movdl,30movbh,0int10h;显示串movah,9

movdx,offsetletterint21h;置输入光标movah,2

movdh,15;在15行30列输入movdl,30movbh,0int10h;输入小写字母movah,1int21h

addal,20h;加密;显示加密后的字符movdl,almovah,2int21h;开窗口movah,6

moval,1;上卷1行

movch,8;从8行30列到15行60列

movcl,30movdh,15movdl,60

movbh,27h;绿底灰字int10h

inccont;可输入3次cmpcont,3jnerepttout1:movah,4chint21hendstart

35编写程序,在屏幕上显示彩色的26个英文字母。查看正确答案程序如下:.modelsmall.dataletterdb?n='a';重复汇编m=1eh;蓝底黄字开始rept26;26个小写字母dbn,mn=n+1m=m+1endm.codestart:

movax,@data;各个段都在代码段中movds,ax;开窗口movah,06hmoval,0

movbh,37h;白底黑字0f0h,兰灰底灰白字37h,黄底白字0e7hmovch,3;从8行30列到15行60列movcl,3movdh,15movdl,60

int10h;置光标locate:movah,2

movdh,6;光标在6行30列movdl,30movbh,0int10h

;显示彩色的26个英文字母movbx,offsetletter+1movbp,bx

movbx,segletter+1moves,bxmovah,13hmoval,3movbh,0

movcx,26;26个字母int10hmovah,4chint21hendstart

36编写程序,在窗口中将键盘输入的一串字符中的大写字母和小写字母的个数分别统计并显示出来。查看正确答案程序如下:

include9-4.mac;宏库.modelsmall.data

mess1db'input:$'mess2db29,32dup(?)daxiedb?xiaoxiedb?.codestart:

movax,@datamovds,axclearsc;清屏

clearsw8,30,15,60,27h;开窗口,绿底灰白字

cursor12,30;置显示光标;显示提醒movah,9

movdx,offsetmess1int21h;输入串moval,0movah,10

movdx,offsetmess2int21h;统计movcx,0

movcl,mess2+1;输入的个数

movbx,2;从第2个单元存放键入的字母let1:

moval,mess2[bx]testal,20h;区分大小写jzlet2;为0,即大写转incxiaoxie;小写加1jmplet3let2:

incdaxie;大写加1let3:incbxlooplet1

windows8,30,15,60,27h;窗口内上卷cursor14,30;在16行30列显示addxiaoxie,30h

displxiaoxie;显示小写个数

windows8,30,15,60,27h;窗口内上卷adddaxie,30h

displdaxie;显示大写个数out1:movah,4chint21hendstart

37编写对键盘输入一段英文的操作计时的程序。

查看正确答案程序如下:include9-4.mac.modelsmall.data

letter1db'Timestart=','$'letter2db'Timeend=','$'letter3db'Timetotal=','$'inputdb100,102dup(?)hourdb?minutesdb?secondsdb?persecdb?contdb0.codestart:

movax,@datamovds,axclearsc;清屏cursor2,50;置光标movah,9

movdx,offsetletter1;显示串1int21hsss:

;读时间并显示

movah,2ch;CH=小时,CL=分,DH=秒,DL=百分秒int21hmovbx,0movbl,ch

calldisp_2_10;显示小时displ':';显示:movbx,0movbl,cl

calldisp_2_10;分displ':';显示:movbx,0movbl,dh

calldisp_2_10;秒displ':';显示:movbx,0movbl,dl

calldisp_2_10;百分秒subch,hour;计算时间差subcl,minutessubdh,secondssubdl,persec

movhour,ch;保存时间差movminutes,clmovseconds,dhmovpersec,dlinccont

cmpcont,2;显示2次时间jzout1

cursor7,10;置输入光标movdx,offsetinput;键盘输入movah,10int21h

cursor3,50;置光标;显示串2movah,9

movdx,offsetletter2int21hjmpsssout1:

cursor4,50;置光标movah,9

movdx,offsetletter3;显示串3int21h;显示时间差movcx,3

movsi,offsethourmovbx,0:

movbl,[si];

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论