资源描述:
《微机原理作业-4》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.试分析下列程序段:ADDAX,BXJNCL2SUBAX,BXJNCL3JMPSHORTL5L2:……L3:……L5:……如果AX、BX的内容给定如下:AXBX(1)14C6H80DCH(2)B568H54B7H问该程序在上述情况下执行后,程序转向何处?解:(1)转向L2因为(AX)+(BX)没有进位。(2)转向L5因为(AX)+(BX)=0A1FH,有进位。然后(AX)-(BX)有进位。2.编写程序,使用三种以上的方法,将存储器中DS:2000H开始的地址单元中的100字节数据复制到ES:3000H开始的存储器地址单元中。解:DATASEGMENTORG2000HD1DB100
2、DUP(?)DATAENDSEXTRASEGMENTORG3000HD2DB100DUP(0)EXTRAENDS11CODESEGMENTASSUMECS:CODE,DS:DATA,ES:EXTRASTART:MOVAX,DATAMOVDS,AXMOVAX,EXTRAMOVES,AXLEASI,D1LEADI,ES:D2MOVCX,100;L1:MOVAL,[SI];MOVES:[DI],AL;INCSI;INCDI;LOOPL1REPMOVSBHLT11(1)利用通用传送指令MOVMOVSI,2000HMOVDI,3000HMOVCX,100AA:MOVAL,[SI]MOV[DI
3、],ALINCSIINCDILOOPAAHLT(2)利用交换指令XCHGMOVSI,2000HMOVDI,3000HMOVCX,100AA:MOVAL,[SI]XCHG[DI],ALINCSIINCDILOOPAAHLT(3)利用换码指令XLATMOVBX,2000HMOVDI,3000HMOVCX,100AA:XORAL,ALXLATMOV[DI],ALINCBXINCDILOOPAAHLT(4)利用堆栈实现数据传送MOVSI,2000HMOVDI,3000HMOVCX,50AA:PUSH[SI]POP[DI]INCSIINCSIINCDIINCDI11LOOPAAHLT(5)利
4、用串操作指令REPMOVSBMOVSI,2000HMOVDI,3000HMOVCX,100CLD;DF=0,SI、DI自动+1REPMOVSBHLT3.在DA1开始的4个单元中存放着一个32位数,求出其中的“1”的个数,并存入COUNT单元中。解:DATASEGMENTDA1DD12345678HCOUNTDB00HDATAENDSCODESENGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETDA1MOVBL,00HMOVBH,8MOVCX,4A2:MOVAL,BYTEPTR[SI]AA:RORAL,111
5、JNCL1INCBLL1:DECBHJNZAAINCSILOOPA2MOVCOUNT,BLMOVAH,4CHINT21HCODEENDSENDSTARTDATASEGMENTDATA1DBFEH,86H,7CH,35HCOUNTDB00HDATAENDSSTACKSEGMENTDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK11START:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSI,OFFSETDATA1MOVBX,[SI]MOVDX,[SI+2]MOVCX,32XORAL,ALLP
6、1:RCRDXRCRBXJNCLP2INCALLP2:LOOPLP1MOVCOUNT,ALMOVAH,4CHINT21HHLTP2051.下列变量各占多少字节?A1DW23H,5876H4字节A2DB3DUP(?),0AH,0DH,‘$’6字节A3DD5DUP(1234H,567890H)4×2×5=40字节A4DB4DUP(3DUP(1,2,‘ABC’))5×3×4=60字节5.对于下面的数据定义,各条MOV指令执行后,有关寄存器的内容是什么?DA1DB?DA2DW10DUP(?)DA3DB‘ABCD’MOVAX,TYPEDA1MOVBX,SIZEDA2MOVCX,LENGTHD
7、A311解:各条MOV指令执行后,有关寄存器的内容如下:MOVAX,TYPEDA1;(AX)=1MOVBX,SIZEDA2;(BX)=20MOVCX,LENGTHDA3;(CX)=16.下段程序完成后,AH等于什么?INAL,5FHTESTAL,80HJZL1MOVAH,0JMPSTOPL1:MOVAH,0FFHSTOP:HLT解:如果地址为5FH的外设输入到AL中的数据的最高位=1,则(AH)=0,否则,(AH)=0FFH。13.将键盘上输入的一位十六进制数转换成十