1、习习 题题 二二3.8086有20条地址总线和16条数据总线,它能访问的内存空间有多大?经由数据总线一次传送的有符号整数范围有多大?220=1MB-215215-1-32768327675.将十六进制数62A0H分别与下列各数相加,试给出和数及标志位AF、SF、ZF、CF、OF和PF的设置状态:(1)1234H(2)4321H(1)62A0H+1234H=74D4HAF:0SF:0ZF:0CF:0OF:0PF:1(2)62A0H+4321H=A5C1HAF:0SF:1ZF:0CF:0OF:1PF:08.给定一个数的有效地址是2359H,且(DS)=490BH,存储该数据的物理地址是什么?物理地
2、址=段地址10H+偏移地址=490BH10H+2359H=4B409H9.若(BX)=637DH,(SI)=2A9BH,位移量=0C237H,(DS)=3100H,给出由这些寄存器和下列寻址方式下形成的有效地址和物理地址:(1)直接寻址(2)用BX的寄存器间接寻址(3)用BX的寄存器相对寻址(4)用BX和SI的基址变址寻址(1)0C237H,3100H10H+0C237H(2)637DH,3100H10H+637DH(3)637DH+0C237H,3100H10H+.(4)637DH+2A9BH,3100H10H+.10.若(CS)=5200H,物理转移地址是5A230H,那么(CS)=780
3、0H时,物理转移地址将如何改变?偏移地址=5A230H-520010H=08230H7800H10H+08230H=80230H习习 题题 三三1.写出把首地址为BLOCK的字数组的第8个字送到AX寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址BLOCKDW8DUP(?)(1)MOVBX,OFFSETBLOCKADDBX,14MOVAX,BX(2)MOVBX,OFFSETBLOCKMOVAX,BX+14(3)MOVBX,OFFSETBLOCKMOVSI,14MOVAX,BXSI4.已知:(SS)=0FF00H,(SP)=00A0H。先执行两条
4、把8000H和0F79H分别进栈的PUSH指令,再执行一条POP指令。画出堆栈区和SP的内容变化过程示意图。MOVAX,8000HMOVBX,0F79HPUSHAXPUSHBXPOPCX(SS):(SP)FF00:008FFF00:009AFF00:009BFF00:009CFF00:009DFF00:009EFF00:009F栈底FF00:00A079HBX0FH00HAX80H00HAX80H5.已知X、Y、Z均为双精度数,它们分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,高字节在高地址,低字节在低地址。用指令序列实现:WX+Y+Z*2并用W和W+2单元存放运算结果。DA
5、TASEGMENTVALUEDW2XDD?YDD?ZDD?WDD?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,WORDPTRZ先Z低16位乘MULVALUEMOVCX,DX高16位放入CXMOVBX,AX低16位放入BXMOVAX,WORDPTRZ+2Z高16位乘MULVALUEADDAX,BX低16位相加ADCDX,CX高16位相加ADDAX,WORDPTRYY+Z*2 低16位ADCDX,WORDPTRY+2Y+Z*2高16位ADDAX,WORDPTRXX+Y+Z*2低16位ADCDX,WORD
6、PTRX+2X+Y+Z*2高16位MOVWORDPTRW,AXMOVWORDPTRW+2,DXMOVAX,4CHINT21HCODEENDSENDSTART8.已知在内存中有一个首地址为ARRAY的N字数组。编程实现:测试该数组中正数、0及负数的个数,并将结果分别存放在DI、SI和BX中。DATASEGMENTARRAYDB200DUP(?)ZRDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,NMOVBX,0MOVDI,0MOVSI,OFFSETARRAYAGAIN:MOVAL,SIINCSICM
7、PAL,00HJZZERO判断是否为0TESTAL,80HJZPOSI判断是否为正数JMPNEG否则为负数,无条件转移ZERO:INCZRLOOPAGAINJMPDONEPOSI:INCDILOOPAGAINJMPDONENEG:INCBXLOOPAGAINJMPDONEDONE:MOVSI,ZRMOVAH,4CHINT21HCODEENDSENDSTART1 1操作数类型不匹配操作数类型不匹配例如,将BL的值送AX。错误方法:mov ax,bl;类型不匹配正确方法:(1)作为无符号数。moval,blmovah,0(2)作为带符号数。moval,blcbw容易犯的错误2.2.凭空构造指令凭空构造指令例如:(1)实现AX=AL*5。错误方法:mul5;MUL的操作数不能是立即数(2)将内存单元(段地址在DS,偏移地址在AX)的一个字节送BL。错误方法:movbl,ax;内存操作数不能用AX正确方法:movsi,axmovbl,si3 3对标志位的错误使用对标志位的错误使用例如:判断AX的值,若AX=0FFFFH,则转移到标号L。错误方法:notax;NOT不影响标志位jzl正确方法:xorax,0ffffhjzl或cmpax,0ffffhjel