《汇编答案(课后习题).pdf》由会员分享,可在线阅读,更多相关《汇编答案(课后习题).pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、作业1 解答1.设 DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=00001000H,EBX=00002000H,假设按16位实模式操作,确定下列每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方法。(1)MOV(2)MOV(3)MOV(4)MOV(5)MOV(6)MOVAL,1234HEDX,BXCL,BX+IOOHSI,EBXAH,BUFBX+SIEAX,BP+1234HEAX+EBX,DH物理地址:21234H,直接寻址22000H,间址寻址22100H,基址寻址24000H,间址寻址27000H,基址变址寻址 3143
2、4H,堆栈段的基址寻址(7)MOV23000H,基址变址寻址试指出下列指令中的错误(1)MOVBX,SI;源、目同为内存操作数(2)MOVAH,DX;长度不一致(3)INCBX;没有指明内存操作数的类型(4)MOV DS,SS;数据段、堆栈段不可能为同一个基址(5)XCHG AX,2000H;不能与立即数交换(6)MOV AX,BX+DX;DX寄存器不是变址寄存器(7)XCHG BP,ES;源操作数不能是段寄存器(8)ADDBX,BX;被加数没有指明长度(9)MOV AX,DI+SI;源操作数表达式错误3.写出把首地址为BUF的字节缓冲区中第5 个字节数送AL寄存器的指令,要求使用以下几种寻址
3、方式:(I)寄存器间接寻址;解:MOV BX,OFFSET BUF+4MOV AL,BX(2)寄存器变址寻址;解:MOV SI,OFFSET BUFMOV AL,SI+4(3)基址变址寻址。解:MOV BX,OFFSET BUFMOV SL 4MOV AL,BX+SI书上习题P69P704.1 解:(1)交换指令实现:MOV AX,WORD PTR FIRSTXCHG AX,WORD PTR SECONDMOV WORD PTR FIRST,AX(2)传送指令实现:MOV AX,WORD PTR FIRSTMOV BX,WORD PTR SECONDMOV WORD PTR FIRST,BXM
4、OV WORD PTR SECOND,AX(3)堆栈实现:PUSH WORD PTR FIRSTPUSH WORD PTR SECONDPOP WORD PTR FIRSTPOPWORD PTR SECOND4.2 解:AX=6601H作业2解答2.使 AX寄存器清0 有 4 种方式,试写出这4 条指令1 .指出下列算术逻辑指令执行后标志c、z、s、p、o、A 的状态MOVAL,80H不影响DECAL不00011 ;AL=7FHADDAL,10H001010;AL=8FHSUBAL,10H000010;AL=7FHMOVAL,3AH不影响ANDAL,0F0HC、0=000010未审义;AL=3
5、0HORAL,OFOHC、0=000110未 定 义;AL=OFOHXORAL,0F0HC、0=001010未 定 义;AL=O解:MOVAX,0XORAX,AXSUBAX,AXANDAX,03.设一个字节数据X 存放在AL寄存器中,试说明下列程序的功能XORAH,AH;AX高位清0SALAX,1 ;AX算术左移1位,既乘2MOVCL,2SALAX,CL;AX算术左移2 位,既乘4ADDAX,BX;AX+BXAX功能:AX的内容乘8 后,再与BX的内容相加,和放在AX中。4.试编程实现:(1)AL寄存器的低4 位清0解;:AND AL,OFOH(2)BL寄存器的低4 位置1解;:OR BL,O
6、FH(3)CL寄存器的低4 位取反解;:XOR CL,OFOH(4)测试DL寄存器的最低2 位是否为0,若是将0 送入AL寄存器;否则将1送 A L 寄存器。解:ZERO:NEXT:解法2:TESTDL,03HJZZERO;为。转MOVAL,1 ;不为0 时JMPNEXTMOVAL,0;为0 1 1 寸BSFBX,DX;由低向高扫描CMPBX,2;比较第一个“1”所在的位置JGZERO;BX 的值2,ZENEMOV AL,1 ;不为0 时JMP NEXTRO:MOV AL,0;为0 时iXT:.5.统计在AX寄存器中有多少个1,并将结果送DL寄存器中。解:MOV CX,0LP1:TEST AX
7、,0;AX=0?JZ EXIT;为。退出循环SAL AX,1 ;否则,高位一 CFJNC LP2;C F=0,继续INC CX;C F=1,累加1 的个数LP2:JMP LP1;继续判断下一位EXIT:.教科书P。704.3 解:XX DW?MOV EDX,0 或 MOV DX,12HMOV EAX,1193182 MOV AX,34DEHMOV EBX,433 MOV BX,1B1HDIV EBX DIV BXMOV XX,AX4.4 解SAL AH,4;低4 位移到高4 位AND AL,OFH;AL 的高 4 位为 0OR AH,AL 或 ADD AH,AL;人展拼装结果解法2:SAL A
8、L,4SAL AX,44.5 解MOV CX,8;计数器MOV DL,0;低位指针MOV DH,7;高位指针MOV AH,ALSTART:BT AL,DH;测高位JNC ZERO;为。转BTS AH,DL;非0,对应低位置1JMP LP1ZERO:BTR AH,DL;对应低位置0LP1:INC DL;修改指针DEC DHLOOP START;循环MOV AL,AH4.6 解;(1)BUF DB 50 DUP(?)PLUS DB 50 DUP(?)MINUS DB 50 DUP(?)MOV BX,OFFSET BUFMOV SL OFFSET PLUSMOV DL OFFSET MINUSMOV
9、 CX,50START:MOV AL,BXTESTAL,80H;测试最高位是否为1JZPLUS1;正数转MOVBYTEPTR DI,AL;存负数IMPLP1PLUS1:MOVBYTEPTR SI,AL;存正数LP1:INCSI;修改指针INCDIINCBXLOOPSTART;循环(2)BUFDB 50 DUP(?)NOTODB 50 DUP(?)MOVBX,OFFSET BUFMOVDL OFFSET NOTOMOVCX,50START:MOV AL,BXCMPAL,0JZLP1;为0 转MOVBYTEPTR DI,AL;存非。数LP1:INCDI;修改指针INCBXLOOPSTART;循环(
10、3)BUFDB 50 DUP(?)ABBDB 50 DUP(?)MOVBX,OFFSET BUFMOVDL OFFSET ABBMOVCX,50START:MOV AL,BXTESTAL,80H;测试符号位JZPLUS;正数转NEGAL;负数,求补PLUS:MOVBYTEPTR DI,AL;存绝对值INCDI;修改指针INCBXLOOPSTART;循环(4)BUFDB 50 DUP(?)FABSDD?MOVBX,OFFSET BUFMOVEAX,DWORD PTR BXTESTEAX,80000000H;测试符号位JZPLUS;正数转NEGEAX;负数,求补PLUS:MOVFABS,EAX;存绝对值4.8 解:MOVAX,1000HMOVDS,AXMOVAX,2000HMOVES,AXMOVSL 2345HMOVDL 3456HMOV CX,1024CLDREP MOVSB