1/19重庆科技学院试卷库系统试卷库导出试卷微机原理及应用-编程题(43题)题序:0017题型:06难度:01分值:10.0章号:03节号:02知识点:。8086/8088指令系统题干:变量DATAX和DATAY定义如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H试编写一个程序段,实现将DATAX和DATAY两个字数据相乘(用MUL)。答案:解:(1)MOVAX,DATAXMULDATAYMOVDATAY,AXMOVDATAY+2,DX题序:0018题型:06难度:02分值:10.0章号:03节号:02知识点:。8086/8088指令系统题干:变量DATAX和DATAY定义如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H试编写一个程序段,实现将DATAX除以23(用DIV)。答案:解:(1)MOVAX,DATAXMOVBL,23DIVBLMOVBL,AH2/19MOVAH,0MOVDATAY,AX。存放商MOVAL,BLMOVDATAY+2,DX。存放余数题序:0002题型:06难度:03分值:10.0章号:03节号:02知识点:。8086/8088指令系统题干:试编写一个程序段,实现将BX中的数除以10,结果仍放在BX中。答案:解:MOVCL,0AHMOVAX,BXDIVCLMOVBX,AX题序:0016题型:06难度:03分值:10.0章号:03节号:02知识点:。8086/8088指令系统题干:变量DATAX和DATAY定义如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H试编写一个程序段,实现将DATAX和DATAY中的两个双字数据相加,和存放在DATAY和答案:解:(1)MOVAX,DATAXADDAX,DATAYMOVBX,DATAX+2ADDBX,DATAY+2MOVDATAY,AXMOVDATAY+2,BX3/19题序:0020题型:06难度:03分值:10.0章号:03节号:02知识点:。8086/8088指令系统题干:变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。答案:解:MOVAX,0MOVAL,N1+1SUBAL,N2+1AASMOVDL,ALMOVAL,N1SBBAL,N2AASMOVDH,AL题序:0006题型:06难度:02分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序实现对两个存储区中的字进行比较。如找到一对不同的字,则退出,此时,ZF为0,DI指向此字;如两个存储区中所有的字都相同,则退出程序时,CX中值为0,ZF为1。答案:解:MATT:MOVSI,OFFSETSOURCE。源区首址MOVDI,OFFSETTARGET。目的区首址MOVCX,NUMBERJCXZEXIT。如CX为0,则结束PUSHCX。保存有关寄存器PUSHSIPUSHDICLD。清方向标志REPECMPSWJZMATCH。比较PUSHF。ZF为1,则转移SUBDI,2。ZF为0,则DI指向次字POPFJMPEXIT。推出4/19MATCH:POPDI。恢复寄存器POPSIPOPCXEXIT:RET题序:0015题型:06难度:02分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:根据下列要求编写一个汇编语言程序::(1)代码段的段名为COD_SG(2)数据段的段名为DAT_SG(3)堆栈段的段名为STK_SG(4)变量HIGH_DAT所包含的数据为95(5)将变量HIGH_DAT装入寄存器AH,BH和DL(6)程序运行的入口地址为START答案:解:DAT_SGSEGEMNTHIGH_DATDB95DAT_SGENDS。STK_SGSEGMENTDW64DUP(?)STK_SGENDS。COD_SGSEGMENTMAINPROCFARASSUMECS:COD_SG,DS:DAT_SG,SS:STK_SGSTART:MOVAX,DAT-SGMOVDS,AXMOVAH,HIGH_DATMOVBH,AHMOVDL,AH5/19MOVAH,4CHINT21HMAINENDPCOD_SGENDSENDSTART题序:0026题型:06难度:02分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:已知整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;(2)若两个数均为奇数,则两数分别加1,并存回原变量;(3)若两个数均为偶数,则两变量不变。答案:解:dsegsegmentadw?bdw?dsegendscsegsegmentmainprocfarassumecs:cseg,ds:dsegstart:pushdssubax,axpushaxmovax,dsegmovds,axbegin:movax,amovbx,bxorax,bxtestax,0001jzclass6/19testbx,0001jzexitxchgbx,amovb,bxjmpexitclass:testbx,0001jzexitincbincaexit:retmainendpcsegendsendstart题序:0001题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:在DS段中有一个从TABLE开始的由160个字符组成的链表,设计一个程序,实现对此表进行搜索,找到第一个非0元素后,将此单元和下一单元清0。答案:解:MOVCX,SEGTABLEMOVDS,CX。将段地址送DSMOVSI,OFFSETTABLE。表偏移量送SIMOVCX,160。字节数XORAL,ALNEXT:CMPAL,[SI]JNEEXIT1INCSILOOPNEXTEXIT1:MOV[SI],ALINCSI7/19MOV[SI],AL题序:0004题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:用循环控制指令设计程序段,从60H个元素中寻找一个最大值,结果放在AL中。答案:解:MOVSI,OFFSETDATA1。将数据起始地址送SIMOVCX,5FH。有60H-1次循环MOVAL,[SI]。将第一个元素放AL中COMPARE:INCSICMPAL,[SI]JLXCHMAXJMPNEXTXCHMAX:MOVAL,[SI]NEXT:LOOPCOMPARE题序:0007题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序实现在TABLE为起始地址的100个字符长度的表中检索“$字符。答案:解:START:MOVCX,SEGTABLE。表段地址送ESMOVES,CXMOVDI,OFFSETTABLE。表偏移量送DIMOVAL,'$'。检索的关键字MOVCX,64H。检索的字节数PUSHDI。保存起始地址CLD清除方向标志REPNESCASB。检索JNZNFOUN。如未找到,则转移SUBDI,1找到,则指向字符JMPEXITNFOUN:POPDI。恢复起始地址EXIT:RET题序:0009题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序实现两个16位非组合BCD码的数相加。8/19答案:解:ANBCD:MOVCH,AH。进入程序段时,AX中为第二个操作数ADDAL,BL。BX中为被加数,实现低8位相乘AAAXCHGAL,CHADCAL,BH。实现高8位相加AAAMOVAH,AL。和保存在AX中MOVAL,CHRET题序:0010题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序段设计一个实现16位非组合BCD码减法的程序。答案:解:SUBCD:MOVCH,AH。AX-BX-AX,为非组合BCD码SUBAL,BLAASXCHGAL,CHSBBAL,BHAASMOVAH,ALMOVAL,CHRET题序:0011题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序实现两个16位组合BCD码相减,进入程序时,BX中为减数,AX中为被减数,程序执行后,结果在AX中。答案:解:STASUB:MOVCH,AH。保存高8位SUBAL,BL。低8位相减DAS。十进制调整XCHGAL,CHSBBAL,BH。高8位相减9/19DASMOVAH,AL。结果在AX中MOVAL,CHRET题序:0012题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序实现两个16位组合BCD码相加。进入程序时,BX中为加数,AX中为被加数,程序执行后,结果在AX中。答案:解:STAADD:MOVCH,AH。AX+BX-AX,为组合BCD码ADDAL,BLDAAXCHGAL,CHADCAL,BHDAAMOVAH,ALMOVAL,CHRET题序:0013题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序将一个8位二进转换为2位BCD数字,进入程序时,AL中为二进制数,退出程序时,如CF为0,则AL中为BCD数字,如CF为1,则表示由于输入值超出范围故结果无效。答案:解:START:CMPAL,99。是否超出范围?JBESTRATSTC。是,则转EXIT,并给CF置1JCEXITSTRAT:MOVCL,10。10作为除数10/19XORAH,AHCBW。将AL中数扩展到AHDIVCL。除法结果AL中为高位,AH中为低位MOVCL,4SHLAL,CL。左移4位ORAL,AH。合成BCD码在AL中EXIT:RET题序:0014题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写程序用XLAT指令将小于16的二进制数转换成ASCII表示的16进制数。答案:解:START:JMPBINASCASCIIDB'0123456789ABCDEF'BINASC:PUSHBXANDAL,0FH。清除AL中高4位LEABX,ASCII。BX指向ASCII表XLAT。转换为ASCII码POPBXRET题序:0030题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写完整的8086汇编程序:将字符缓冲区A的字符'1234567890'倒序存放到缓冲区B中。答案:解:DSEGSEGMENTADB'1234567890'DSEGENDSESEGSEGMENTBDB10DUP(?)ESEGENDS11/19CSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:ESEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,ESEGMOVES,AXLEASI,ALEADI,BADDDI,9MOVCX,10MOVE:CLDLODSBSTDSTOSBLOOPMOVEMOVAH,4CHINT21HCSEGENDSENDSTART题序:0031题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干:编写完整的8086汇编程序:查表求X(0-9)的立方并将结果存放到变量XXX中去。答案:解:DATASEGMENTTABDW0,1,8,27,64,125,216,343,512,729XDB8XXXDW?DATAENDSCODESEGMENT12/19ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX。为DS送初值MOVAL,XADDAL,ALMOVBL,AL。求立方表的偏移MOVBH,0MOVAX,TAB[BX]。查表MOVXXX,AX。保存MOVAH,4CH。返回DOSINT21HCODEENDSENDSTART题序:0033题型:06难度:03分值:10.0章号:04节号:02知识点:。汇编语言及程序设计题干