微计算机原理第二版潘名莲习题答案1—6章

上传人:gbs****77 文档编号:10526522 上传时间:2020-04-12 格式:DOC 页数:50 大小:252KB
返回 下载 相关 举报
微计算机原理第二版潘名莲习题答案1—6章_第1页
第1页 / 共50页
微计算机原理第二版潘名莲习题答案1—6章_第2页
第2页 / 共50页
微计算机原理第二版潘名莲习题答案1—6章_第3页
第3页 / 共50页
点击查看更多>>
资源描述
一习题答案11解释和区别下列名词术语。(1). 微处理器P,微计算机C,微处理器系统PS。(5). 位、字节、字和双字。(7). RAM和ROM(8). I/O接口和I/O设备。(9). 芯片总线、片总线、内总线和外总线。答:(1). 把CPU的复杂电路,包括运算器和控制器作在一片或几片大规模集成电路的半导体芯片上,这种集成电路叫微处理器P。 微处理器为核心,配上RAM、ROM,I/O接口及有关辅助电路组成的微型化的主计算机装置称为微计算机C。 微处理器为核心构成的专用系统称为微处理器系统PS。(5)一个二进制的位称作位、8个相邻二进制位称作字节、2个字节称作字,2个字(4个字节)称作双字。(7)能进行随即读写操作的存储器称作RAM。只读存储器叫ROM。(8)输入/输出接口电路称作I/O接口,通过I/O接口接入的外部设备如监视器,键盘、鼠标称作I/O设备。(9)位于CPU芯片内部,用来实现CPU内部各功能单元电路之间的相互连接和信号的传递的总线叫芯片总线。 片总线是微计算机主板或单板微计算机上以CPU芯片为核心,芯片与芯片间连接的总线。 内总线指微计算机系统中实现插件板之间的连接的总线。如IBM PC 的PC总线,PCXT总线,PCI、ISA总线等等。 外总线用于系统之间的连接,完成系统与系统之间通信的总线。如RS232,IEE488、USB等等。 16 将下列十进制数转换为二进制数、十六进制数和BCD数(1)124625(6)268875解:(1)12401111100B7CH,0.6251610,所以0.6250.AH=0.1010B124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD(2)26825612100001100B10CH,0.8751614,0.8750.EH=0.1110B.268.875=10C.EH=100001100.111B=001001101000.100001110101BCD17 用16位二进制数表示出下列十进制数的原码、反码和补码。(1)128(4)5解:(1)+128 的原码和补码反码均为0000000100000000B (4)5的原码为1000000000000101B,反码为1111111111111010B,补码为1111111111111011B。19 写出系列字母、符号的ASCII码(1)B (2)H (3)SP(空格) (4)5 (5)$ (6)CR(回车符) (7)LF(换行)解:(1)42H、(2)48H、(3)20H、(4)35H、(5)24H、(6)0DH、(7)0AH110 试绘出以下十六进制数在内存中存放的示意图。设存放地址均为00H。解:(1)F7H (2)03BAH (3)C804326BH (4)1122334455667788H11H07H22H06H33H05H44H04H55H03H66H02H77H01H88H00H内容地址C8H03H04H02H32H01H6BH00H内容地址03H01HBAH00H内容地址F7H00H内容地址21 请将左边的术语和右边的含义联系起来,在括号中填入你选择的代号字母: 1. 字长 (i)a. 指由8个二进制位组成的通用基本单元。 2. 字节 (a)b. 是CPU执行指令的时间刻度。 3. 指令 (h)c. PS所能访问的存储单元数,与CPU地址总线条数有关。 4. 基本指令执行周期(g)d. 唯一能代表存储空间每个字节单元的地址,用5位十六进制数表示。 5. 指令执行时间 (j)e. CPU 访问1次存储器或I/O操作所花的时间。 6. 时钟周期 (b)f. 由段基址和偏移地址两部分组成,均用4位十六进制数表示。 7. 总线周期 (e)g. 指寄存器加法指令执行所花时间。 8. Cache (k)h. 完成操作的命令。 9. 虚拟存储器 (l)i. 指P在交换,加工,存放信息时信息的基本长度。 10. 访存空间 (c)j. 各条指令执行所花的时间不同,不同指令,该值不一。 11. 实际地址 (d)k. 为缓解CPU与主存储器间交换数据的速度瓶颈而建立的高速存储器。 12. 逻辑地址 (f)l. CPU执行程序时看到的一个速度接近内存却具有外存容量的假想存储器。22 下面列出计算机中常用的一些单位,试指出其用途和含义。(1) MIPS (2)KB (3)MB (4)GB (5) TB解:(1)MIPS 用来表示计算机运行的速度。1MIPS1百万条指令/秒。 (2)KB 用来表示计算机访存空间大小。1KB1024(210)B(字节) (3)MB用来表示计算机访存空间大小。1MB1048576(220)B(字节) (4)GB用来表示计算机访存空间大小。1GB1024M(230)B(字节)(5)TB用来表示计算机访存空间大小。1TB1024G(240)B(字节)24 试将左边的标志和右边的功能联系起来。要求:(1) 在括号中填入右边功能的代号;(2) 填写其类型(属状态标志者填S:属控制标志者填C)。(3) 写出各标志为0时表示的状态。标 志类 型为0时表示的状态1.SF( b ) a. 陷阱标志2.CF( d ) b. 符号标志3.AF( h ) C. 溢出标志4.DF( i ) d. 进位标志5.TF( a ) e. 零标志6.OF( c ) f. 奇偶标志7.PF( f ) g. 中断标志8.IF( g ) h. 辅助进位标志9.ZF( e ) i . 方向标志 S S S C C S S C S带符号数为正数结果最高位无进位(借位)低4位无进位(借位)串操作步进方向为地址递增8086正常执行程序带符号数运算未产生溢出运算结构由奇数个1CPU关闭中断运算结果不为026 试画出8086/8088的寄存器结构,并说出它们的主要用途。解:AX、BX、CX、DX用作数据寄存器,用作存放操作数、中间结果。 SP堆栈指针、BP基址指针、SI源变趾、DI目的变趾。 IP 指令指针,FH 控制标志、FL 状态标志。 CS 存储代码段首趾、DS存储数据段首趾、SS 存储堆栈段首趾、ES 附加数据段首趾。AHALAXBHBLBXCHCLCXDHDLDX SP BP SI DI IP FH FL CS DS SS ES28 若一个程序段开始执行之前,(CS)97F0H,(IP)1B40H,试问该程序段启动执行指令的实际地址是什么?解:启动执行指令的实际地址PA97F0H10H1B40H99A40H29 若堆栈段寄存器(SS)3A50H,堆栈指针(SP)1500H,试问这时堆栈顶的实际地址是什么?解:栈顶的实际地址(SS)10H(SP)3A50H10H1500H3BA00H211 将8086下列工作方式的特点填于表中。解: 特点方式 MN/MX处理器个数总线控制信号的产生最小方式接5V1个全部由8086产生最大方式接地 可达3个总线控制器8288产生213 有一32位的地址指针67ABH:2D34H存放在00230开始的存储器中,试画出它们的存放示意图。解:示意图如下地址内容类型0023034H偏移量002312DH00232ABH段基址0023367H221 列表填写 8086/8088 的存储器和I/O 的保留空间及其用途:解:8086/8088保留空间用途存储器00000H0007FHFFFF0HFFFFFH中断向量表系统复位启动I/OF8HFFHIntel 保留使用31 指令由 操作码 字段和 操作数 字段组成。8086的指令长度在 16个字节 范围。32 分别指出下列指令中源操作数和目的操作数的寻址方式。若是存储器寻址,试用表达式表示出EA?PA?(1) MOV SI,2100H (4) ADC AX,BXSI (7)MOV AX,ES:BX解(1)源操作数是立即数寻址,目的操作数是寄存器寻址。 (4)源操作数是基址变趾寻址,EA(BX)(SI),PA16(DS)(BX)+(SI), 目的操作数是寄存器寻址。 (7)源操作数是寄存器间接寻址,其中EA(BX),PA16(ES)(BX), 目的操作数是寄存器寻址。33 已知 8086 中一些寄存器的内容和一些存储单元的内容如图320所示,试指出下列指令执行后,AX中的内容(即(AX)?)。(1)MOV AX,2010H (2) MOV AX,BX (3) MOV AX,1200H(4) MOV AX,BX(5)MOV AX,1100HBX (6)MOV AX,BXSI (7)MOV AX,1100HBX+SI(8)LEA AX,SI12H30100H30101H30102H30103H31200H31201H31202H312-3H B7H4CH78H34H65H2AH56HM0100HBXSIDS3000H0002HCPU 1CPU CPU CPU解:(1)(AX)2010H(2)(AX)0100H(3)(AX)4C2AH(4)(AX)3412H (5)(AX)4C2AH (6)(AX)7856H (7)(AX)65B7H (8)(AX)0002H34 已知(AX)2040H,(DX)380H,端口(PORT)(80H)1FH,(PORT1)45H,执行下列指令后,指出结果等于?解:(1)OUTDX,AL;端口(DX)40H(2)OUTDX,AX;端口(DX)40H,(DX1)20H(3)INAL,PORT;(AL)1FH(4)INAX,80H;(AX)451FH(5) OUTPORT1,AL;端口(PORT1)40H(6) OUTPORT1,AX;端口(PORT1)40H 端口(PORT11)20H35 已知:(SS)0A2F0H,(SP)00C0H,(AX)8B31H,(CX)0F213H,试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。图中应标出存储单元的实际地址PA。PUSHAXPUSHCX;位置1POPF;位置2 8BH31HF2H13H 位置1栈顶0A2F0HSSSP0A2FBCH00BCH位置2栈顶SP0A2F0H0A2FBEHSS00BEH0A2FC0H37 已知存储器数据段中的数据如图321所示。阅读下列两个程序段后,回答:1. 每个程序段的运行结果是什么?2. 两个程序段各占多少字节的内存,执行时间是多少?ACH68H63HA0H84H52H22H58H28H16H41H48H M解:DSNUM1(1)LEASI,NUM1;42T+6TMOVAX,SI;210TADDAX,4SI;39T+9TMOV8SI,AX;310TADDSI,2;34TNUM2MOVAX,SI;210TADCAX,4SI;39T+9TMOV8SI,AX;310T总计23个字节,84个时钟周期运行结果如图中SUM所示。(2)SUMMOVAX,NUM1;310TADDAX,NUM2;49T=6TMOVSUM,AX;310TMOVAX,NUM1+2;310TADCAX,NUM2+2;49T+6TMOVSUM+2,AX;310T总计20个字节,70个时钟周期。可见 1. 两个程序运行结果相同。 2. 第二个程序占20个字节,比前者少3个字节,运行时间比前者少14个时钟周期。311 已知数据如图321所示,低位在前,按下列要求编写程序段: 1. NUM1 和 NUM2 两个字数据相乘(均为无符号数),乘积放在SUM开始的单元。解:MOVAX,NUM1MULWORD PTR NUM2MOVSUM,AXMOVSUM+2,DX2. NUM1 和 NUM2 两个字数据相乘(均为带符号数),乘积放在SUM开始的单元。解:MOVAX,NUM1IMULWORD PTR NUM2MOVSUM,AXMOVSUM+2,DX3. NUM1单元的字节数据除以13(均为无符号数),商和余数依次放入SUM开始的两个字单元。解:MOVAL,NUM1MOVAH,0MOVCL,13DIVCLMOVSUM,AX4. NUM1字单元的字数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字单元。MOVAX,NUM1MOVDX,0MOVCX,NUM2DIVCXMOVSUM,AXMOVSUM+2,DX313 已知(AL)0C4H,DATA单元中内容为5AH,写出下列每条指令单独执行后的结果。 ANDAL,DATA;(AL)40H ORAL,DATA;(AL)0DEH XORAL,DATA;(AL)9EH NOTDATA;(DATA)0A5H ANDAL,0FH;(AL)04H ORAL,01H;(AL)0C5H XORAL,0FFH;(AL)3BH TESTAL,80H;(AL)0C4H所有指令执行后都对标志寄存器有影响。319 写出下面指令序列完成的数学计算是什么?解:MOVCL,3;(CL)3SHLAX,CL;(AX)(AX)8SHLBL,CL;(BL)(BL)8SHLCX,CL;(CX)(CX)8,此时(CL)18HSHLDH,CL;DH算术左移24位后(DH)0,CF0320 写出能替代下列重复操作指令完成同样功能的 的指令序列1. REPMOVSW2. REPCMPSB3. REPSCASB4. REPLODSW解:1AGAIN:MOVSW3 AGAIN:SCASBDECCX DEC CXJNZAGAINN JNZ AGAIN2AGAIN: CMPSB 4 AGAIN:LODSW DECCX DEC CXJNZ AGAIN JNZ AGAIN323 下面两条短转移指令的转移地址ADDR1和ADDR2分别是多少(用十六进制表示)?1.0220 EB 0A JMP ADDR12.0230 EB F7 JMP ADDR2解:JMP ADDR1 的下一条指令的地址偏移为0222H,0222H0AH022CH。ADDR1地址偏移量为022CH。 JMP ADDR2下一条指令的地址偏移量为0232H,0232H0FFF7H0229H。ADDR2地址偏移量为0229H。327试编写一个程序段,能完成下列数学表达式的功能。 1(X1)X 0 (1X1) 1 (X1)解:设带符号数(WORD)在AX中,程序段如下GETX:TESTAX,AXJNSTZEROMOVAX,0FFFFHJMPTENDTZERO:JZTENDMOVAX,1TEND:RET328 8086的中断机构中共允许256级中断,其专用中断有5个,分别为类型0中断(除数为0的中断)、类型1中断(单步中断)、类型2中断(非屏蔽中断NMI)、类型3中断(断点中断)和类型4中断(溢出中断)。330 用DOS功能调用编写一个程序,能将317题中的结果在屏幕上显示出来。解:MOVCL,4MOVAL,87HMOVBL,ALSHRBL,CLANDAL,0FHORAL,30HMOVDL,ALMOVAH,2INT21HANDBL,0FHORBL,30HMOVDL,BLINT21H42 计算下列表达式的值(设A150,B120,G12 )解:1. A1*100+B1=50*100+20=50202. A1 MOD G1+B1=50 MOD 2 +20=203. (A1+2)*B1-2=(50+2)*20-2=10384. B1/3 MOD 5=20/3 MOD 5=15.(A1+3)*(B1 MOD G1)(503)*(20 MOD 2)06. A1 GE G1= 50 GE 2 =11111111B7. B1 AND 7=20 AND 7= 48. B1 SHL 2 + G1 SHR 1= 20 SHL 2 + 2 SHR 1= 8143 已知数据段定义如下,设该段从03000H开始:DSEGSEGMENTARRAY1DB2 DUP(0,1,?)ARRAY2DW100 DUP(?)FHZEQU20HARRAY3DB10 DUP(0,1,4 DUP (2),5)DSEGENDS试用分析算符OFFSET,LENGTH,SIZE,SEG,TYPE 求出 ARRAY1,ARRAY2,ARRAY3的段、偏移量和类型,以及它们的LENGTH和SIZE。解:求段:SEGARRAY1=0300HSEGARRAY2=0300HSEGARRAY3=0300H求偏移量:OFFSETARRAY1=0000HOFFSETARRAY2=0006HOFFSETARRAY3=00EEH求类型:TYPE ARRAY1=1TYPE ARRAY2=2TYPE ARRAY3=1求LENGTH:LENGTHARRAY1=6LENGTHARRAY2=100LENGTHARRAY3=70求SIZE:SIZE ARRAY1=6SIZE ARRAY2=200SIZE ARRAY3=7047 下述程序段执行后,寄存器CX,SI的内容是多少?ARRYDW20DUP(5)XOR AX,AXMOVCX,LENGTH ARRYMOVSI, SIZE ARRY TYPE ARRY解:(CX)20(SI)4023848 试定义一个结构,它应包括一个学生的下列信息:姓名、学号及三门课程的成绩。然后给出3条结构预置语句,将3个学生的情况送入3个结构变量中。解: DATASEGMENTSTUDENTSTRUCNAMEDB4 DUP(?)NODB?ENGDB?MATDB?PHYDB?STUDENTENDSS1STUDENTS2STUDENTS3STUDENTDATAENDS49 试定义一条宏指令,它可以实现任一数据块的传送(假设无地址重叠),源地址、目的地址和块长度作为参数处理。MOVDATAMACROSN,DN,CN,PNMOVAL,PNCLDTESTAL,#80HJZCONTSTDCONT:MOVSI,OFFSET SNMOVDI,OFFSETDNMOVCX,CNREPMOVS DN,SNENDM410 设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误,并改正之。(1)ADD VAR1,VAR2 (2)SUB AL,VAR1 (3)JMP LABSI(4)JNZ VAR1 (5)JMP NEAR LAB (6)MOV AL,VAR2解:(1)MOVAX,VAR1 (2)MOV AH,0 (3)JMPOFFSET LAB SIADDAX,VAR2 SUB AX,VAR1 (4)MOV SI,VAR1 (5)JMP NEAR PTR LAB (6)MOVAX,VAR2JNZ TARGET TARGET:JMPSI411 已知数据定义如下,问L1和L2等于多少?B1DB1,2,3,123B2DB0L1EQU $-B1L2EQU B2-B1解:$=7,$-B1=7-0=7即L1等于7L2=B2的偏移地址6-B1的偏移地址0=6415 用查表法将存放于数据段中的一个有序的十六进制数串(范围:0FH)翻译成ASCII码表仍放于数据段中。解:DATASEGMENTXDHEXDB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15TBASCIIDB0123456789ABCDEFDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVCX,16MOVSI,OFFSETXDHEXMOVBX,OFFSETTBASCIIMOVAH,0AGAIN:MOVAL,SIMOVDI,AXMOVAL,BX+DIMOVSI,ALINCSILOOPAGAINRETSTARTENDPCODEENDSENDSTART416 试编写一程序,把X和Y中的大者存于BIG单元,若XY,则把其中之一存入BIG单元。解:DATASEGMENTXDW?YDW?BIGDW?DATAENDS;-CODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVAX,XCMPAX,YJNCSTOBIG;无符号数判断,有符号数用JGEMOVAX,YSTOBIG:MOVBIG,AXRETSTARTENDPCODEENDSENDSTART417试编写一程序,比较两个字符串STRING1和 STRING2 所含字符是否完全相同,若相同显示 “MATCH”,反之,则显示“NO MATCH”。解:DATASEGMENTSTRING1DB50 DUP(?)STRING2DB50 DUP(?)MATDBMATCH$NMATDBNO MATCH$DATAENDS;-CODEEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVCX, LENGTH STRING1LEASI, STRING1LEADI, STRING2LEADX,MATCLDREPECMPSBJEPLAYLEADX,NMATPLAY:MOVAH,09INT21HRETSTARTENDPCODEENDSENDSTART419 假设已编好5个乐曲程序,它们的入口地址(含段首趾和偏移地址)存放在数据段中的跳越表MUSICTAB中。试编写一个管理程序,其功能是:根据键盘输入的乐曲编号 0004 转到所点乐曲入口,执行乐曲程序。解:DATASEGMENTMUSICTABDWOFFSET MUSIC0,SEG MUSIC0DWOFFSET MUSIC1,SEG MUSIC1DWOFFSET MUSIC2,SEG MUSIC2DWOFFSET MUSIC3,SEG MUSIC3DWOFFSET MUSIC4,SEG MUSIC4DATAENDS;-CODEEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AX;-KEYIN:MOVAH,1INT21HSUBAL,30HMOVCL,4ROLAL,CLMOVBL,ALMOV AH,1INT21HSUB AL,30HADD AL,BLMOV AH,0ADDAX,AXADDAX,AXLEA BX, MUSICTABMOV SI,AXJMP DWORD PTRBXSI;见教科书116页, 段间间接寻址MUSIC0:MUSIC1: MUSIC2:MUSIC3: MUSIC4: EXIT:RETSTARTENDPCODEENDSENDSTART421 在数据段中存有一字符串(80个字符),以回车CR结束。编一程序统计此字符串的长度,并将它存入数据区LENTH单元,也显示在屏幕上。解:设字符串为STRING字节单元开始,程序采用DO_WHILE的循环结构,CX寄存器用作字符串长度计数。循环结束条件两个:(1)找到CR,屏幕上显示字符串长度LENTH。 (2)未找到CR,屏幕上显示“ERROR”。DATASEGMENTSTRINGDB12345678DB0DHDB71 DUP(?)LENTHDB80 DUP(?)ERRDBERROR$DATAENDS;-CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AX;-MOVDI,OFFSET STRINGCLDMOVCX,80MOVAL,0DHREPNZSCASBJNZPLAYER MOV AX,80 SUB AX,CX MOV CL,10 DIV CL MOV DL,AL OR DL,30H PUSH AXMOVAH,2INT21H POP AX MOV DL,AH OR DL,30H MOV AH,02 INT 21HRETPLAYER:MOVDX,OFFSET ERRMOVAH,9INT21HRET;-MAINENDPCODEENDSENDSTART422 试用串操作指令将一个数组BLOCK(均为字节数)中的奇数和偶数分开存放。解:1设数组BLOCK在数据段,程序运行后把数组中的奇数存放在数据段数组PODATA、偶数存放在数据段数组PEDATA中。2程序分两次扫描,第一次搜索奇数,并存放于PODATA中、第二次搜索偶数,并存放于PEDATA中。3 两次搜索均用FOR语句结构。DATA SEGMENTBLOCK DB 1,2,3,4,5,6,7,8,9,90,21,33COUNT EQU $-BLOCKPODATA DB COUNT DUP(?)PEDATA DB COUNT DUP(?)DATA ENDS;-CODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX;- MOV SI,OFFSET BLOCK MOV DI,OFFSET PODATA MOV CX,COUNTAGAIN: MOV AL,SI INC SI TEST AL,1 JZ ELOP MOV DI,AL INC DIELOP: LOOP AGAIN;- MOV SI,OFFSET BLOCK MOV DI,OFFSET PEDATA MOV CX,COUNTAGAIN1: MOV AL,SI INC SI TEST AL,1 JNZ ELOP1 MOV DI,AL INC DIELOP1: LOOP AGAIN1;- RET;-MAIN ENDPCODE ENDS;- END START423 编一个程序,其功能是将一个字数组ARRAY中的正数和负数分开存放于以PLUS和MINNUS开始的单元中,并在屏幕上显示出正数和负数的个数。设该数组长度放在数组的第一个字单元中。解: 搜索采用FOR 语句结构循环程序。 程序每次循环采用正负数分支完成该次正数与负数分离存储。DATA SEGMENTARRAY DW 10H,8 DUP(1FH,-12)PLUS DW 10H DUP(?,?)MINUS DW 10H DUP(?,?)DATA ENDS;-CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX;- MOV SI,OFFSET ARRAY MOV DI,OFFSET PLUS MOV BX,OFFSET MINUS LODSW MOV CX,AXAGAIN: LODSW TEST AX,8000H JNZ MINSPLS: STOSW LOOP AGAINJMPCOMOUTMINS: XCHG BX,DI STOSW XCHG BX,DI LOOP AGAINCOMOUT: MOV AX,ARRAY SUB DI,OFFSET PLUS SUB BX,OFFSET MINUS MOV AX,DI MOV CL,10 DIV CL OR AL,30H OR AH,30H MOV DL,AL PUSH AX MOV AH,2 INT 21H POP AX MOV DL,AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH INT 21H MOV AX,BX MOV CL,10 DIV CL OR AL,30H OR AH,30H MOV DL,AL PUSH AX MOV AH,2 INT 21H POP AX MOV DL,AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H RET;-MAIN ENDPCODE ENDS END START424 现有一组无序的字:25,46,3,75,5,30,要求对它们进行排序,其算法如图431所示。试编写完成此功能的程序。Y(DI)=0?开始设计数1: (CX)N1设计数2计数1, (DI)(CX)设指针(SI)0eiei+1?(CX)0?交换: eiei+1计数器2计数结束计数器1计数YYNNN注:LODSW指令SI自动2为简化程序BX改为SI解:DATA SEGMENTARRAY DW 25,46,3,75,-5,30COUNT EQU $-ARRAYDATA ENDS;-STACK SEGMENT PARA STACK STACK DB 60 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSORT_ PROC FARSTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV CX,COUNT/2-1 CLDAGAIN0: MOV DI,CX MOV SI,OFFSET ARRAYAGAIN1: LODSW CMP AX,SI JNL NEXT XCHG SI,AX MOV SI-2,AXNEXT: DEC DI JNZ AGAIN1 LOOP AGAIN0 RETSORT_ ENDP;-CODE ENDS END START425 试编写一程序求级数122232的前几项和刚大于1000的项数n。解:采用DO_WHILE循环结构,程序结束时CL中存放n NY开始(CL)0 (BX)0(CL)(CL)1(AL)(CL)(BX)1000?结束(AX)(AL)(CL) (BX)(BX)(AX)DATA SEGMENTN DB ?DATA ENDS;-CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX;- MOV CL,0 MOV BX,0AGAIN: INC CL MOV AL,CL MUL CL ADD BX,AX CMP BX,1000 JBE AGAIN MOV N,CL MOV AL,CL CBW MOV CL,10 DIV CL OR AL,30H MOV CL,AH MOV DL,AL MOV AH,2 INT 21H MOV DL,CL OR DL,30H INT 21H RET;-MAIN ENDPCODE ENDS END START427 数据区中存放着一字节数组BLOCK(其个数为任意),均为组合的十进制数。试编写一程序求该数组之和,并存入SUM单元(和1字节)。解:采用最简单的FOR语句循环结构,寄存器CX作循环控制即可。DATA SEGMENTARRAY DB 12H,13H,14H,15H DB 16H,17H,18H,19HCOUNT EQU $-ARRAYSUM DW ?SUMCHAR DB 6 DUP(?) DB $DATA ENDS;-CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATAMAIN PROC FARSTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX;- MOV CX,COUNT MOV AX,0 MOV SI,OFFSET ARRAYAGAIN: ADD AL,SI DAA XCHG AH,AL ADC AL,0 DAA XCHG AH,AL INC SI LOOP AGAIN MOV SUM,AX MOV DI,OFFSET SUMCHAR MOV DX,DI MOV CL,4 PUSH AX ROR AH,CL
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!