微机原理第4章1
- 格式:ppt
- 大小:1.06 MB
- 文档页数:49
第四章课后作业(6—27)6.试按下列要求分别编制程序段。
(1)把标志寄存器中符号位SF置“1”。
(2)寄存器AL中高、低四位互换。
(3)由寄存器AX、BX组成一个32位带符号数(AX中存放高16位),试求这个数的负数。
(4)现有三个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下,实现(A)+(B) C。
(5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1 形成奇数)。
答:(1) LAHFOR AH,80HSAHF(2) MOV CL,4ROL AL,CL(3) MOV CX,0NEG BXJC CHGJMP GOCHG: MOV CX,1GO: NEG AXSUB AX,CX(4) MOV CL,AMOV AL,BMOV X,ALCHECK:INC XDEC CLJNZ CHECK(5) OR CX,0001H7.试给出下列各指令的机器目标代码。
(1)MOV BL,12H [SI](2)MOV 12H [SI],BL(3)SAL DX,1(4)AND 0ABH [BP] [DI],1234H答:(1)100010 1 0 01 011 100 00010010=8A5C12H(2)100010 0 0 01 011 100 00010010=885C12H(3)110100 0 1 11 100 010=0D1E2H(4)100000 0 1 10 100 011 10101011 00000000 00110100 00010010=81A3AB003412H8.执行下列指令:STR1 DW ‘AB’STR2 DB 16DUP(?)CNT EQU $-STR1MOV CX,CNTMOV AX,STR1HLT执行完成之后,寄存器CL的值是多少?寄存器AX的值是多少?答:因为CNT=16+2=18,所以CX=18=0012H,所以CL=12H=0001,0010;AX中装入的是‘AB’的ASCII码值,其中‘A’在高位AH中,‘B’在低位AL 中,所以AX=4142H=0100,0001,0100,0010。
第3章指令系统3.9 设段寄存器DS=1000H,SS=2000H,ES=3000H,通用寄存器BX=4000H,BP=5000H,SI=6000H,DI=7000H。
在下列各指令中指出存储器操作数的寻址方式,求出有效地址EA、物理地址PA,并分别用物理地址和逻辑地址说明指令执行结果。
(1)MOV CX, [2300H]直接寻址EA=2300HPA=DS*16+EA=1000H*16+2300H=12300H 执行结果:(12300H)→CL,(12301H)→CH (2)MOV BYTE PTR [BX], 8FH寄存器间接寻址EA=BX=4000HPA=DS*16+EA=1000H*16+4000H=14000H 执行结果:8FH→(14000H)(3)MOV DH, [BP+3000H]基址寻址EA=BP+3000H=8000HPA=SS*16+EA=2000H*16+8000H=28000H 执行结果:(28000H)→DH(4)MOV ES: [SI+1210H], AX变址寻址EA=SI+1210H=7210HPA=ES*16+EA=3000H*16+7210H=37210H 执行结果:AL→(37210H),AH→(37211H) (5)MOV [BX+DI+50H], AL基址变址位移寻址EA=BX+DI+50H=0B050HPA=DS*16+EA=1000H*16+0B050H=1B050 H执行结果:AL→(1B050H)(6)INC WORD PTR [BX+SI]基址变址寻址EA=BX+SI=0A000HPA=DS*16+EA=1000H*16+0A000H=1A000 H执行结果:(1A000H)中存放的字的值加13.11 指出下列指令中源操作数的寻址方式。
(1)MOV BL, 0F9H 立即寻址(2)ADD [BX], SI 寄存器寻址(3)SUB CL, [4000H] 直接寻址(4)CMP DX, [SI] 寄存器间接寻址(5)AND SL, [BX+1] 基址寻址(6)OR BP, [DI+2100H] 变址寻址(7)XOR AX, [BP+SI] 基址变址寻址(8)MOV CX, 300 立即寻址3.12 下列指令都是非法的,指出各指令错在哪里?(1)MOV SI, AH两个操作数字长不一致(2)MOV 70H, BL立即数不能做目的操作数(3)MOV CX, F123H十六进制的数以字母打头必须在前面补0 (4)MOV [BX], 6AH两个操作数的字长不确定(5)MOV ES, 5000H立即数不能直接送段寄存器(6)MOV [DI], [3000H]两个操作数不能同为内存操作数(7)MOV DS, SS两个操作数不能同为段寄存器(8)MOV CS, AX不能对CS赋值(9)MOV AL, [CX]寄存器间接寻址中不能使用CX(10)MOV [BX+BP], DX存储器寻址方式中表示有效地址不能同为两个基址寄存器(11)MOV BH, [SI+DI+2]存储器寻址方式中表示有效地址不能同为两个变址寄存器(12)PUSH AL入栈出栈操作必须以字为单位(13)LEA AX, BXLEA指令中源操作数必须为存储器寻址方式(14)LDS BL, [5100H]LDS指令中目的操作数必须为16位的通用寄存器(15)IN AH, DXIN指令中目的操作数必须为AL或AX (16)OUT 288H, AL输入输出指令中端口地址为16位,必须先送给DX(17)ADD [2400H], 1234H两个操作数的字长不确定(18)XOR [2500H], [BX+10H]两个操作数不能同为内存操作数(19)INC [SI]操作数的字长不确定(20)MUL 10MUL指令的操作数不能为立即数(21)IDIV [BP+DI+1300H]操作数的字长不确定(22)SAL AL, 2移位次数大于1必须先送给CL3.14 设SP=2000H,AX=3000H,BX=5000H,执行以下3条指令后,问SP=?AX=?BX=? PUSH AX ;SP减2,栈顶元素为3000HPUSH BX ;SP减2,栈顶元素为5000HPOP AX ;SP加2,将栈顶元素5000H弹出至AX结果:SP=1FFEH,AX=5000H,BX=5000H3.16 下列程序执行完后,AX=?BX=?CX=? MOV AX, 1122HMOV BX, 3344HPUSH AX ;栈顶元素为1122H POP CX ;将栈顶元素1122H 弹出至CXXCHG BX, CX ;BX=1122H,CX=3344HLEA CX, [BX] ;CX=BX=1122H结果:AX=1122H,BX=1122H,CX=1122H3.17 CPU分别执行下列各程序段后,写出各个执行结果的状态标志位OF、SF、ZF、AF、PF、CF的值。
第二章1.8086CPU由哪两部分组成?它们的主要功能是什么?8086CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU的操作是并行的。
总线接口部件BIU的功能:地址形成、取指令、指令排队、读/写操作数和总线控制。
所有与外部的操作由其完成。
指令执行部件EU的功能:指令译码,执行指令。
2.8086CPU中有哪些寄存器?各有什么用途?8086CPU的寄存器有通用寄存器组、指针和变址寄存器、段寄存器、指令指针寄存器及标志位寄存器PSW。
4个16位通用寄存器,它们分别是AX,BX,CX,DX,用以存放16位数据或地址。
也可分为8个8位寄存器来使用,低8位是AL、BL、CL、DL,高8位是AH、BH、CH、DH,只能存放8位数据,不能存放地址。
指针和变址寄存器存放的内容是某一段内地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。
段寄存器给出相应逻辑段的首地址,称为“段基址”。
段基址与段内偏移地址结合形成20位物理地址。
指令指针寄存器用来存放将要执行的下一条指令在现行代码中的偏移地址。
16位标志寄存器PSW用来存放运算结果的特征,常用作后续条件转移指令的转移控制条件。
5.要完成下述运算或控制,用什么标志位判断?其值是什么?⑴比较两数是否相等?将两数相减,当全零标志位ZF=1时,说明两数相等,当ZF=0时,两数不等。
⑵两数运算后结果是正数还是负数?用符号标志位SF来判断,SF=1,为负数;SF=0,为正数。
⑶两数相加后是否溢出?用溢出标志位来判断,OF=1,产生溢出;OF=0,没有溢出。
⑷采用偶校验方式。
判定是否要补“1”?用奇偶校验标志位判断,有偶数个“1”时,PF=1,不需要补“1”;有奇数个“1”时,PF=0,需要补“1”。
(5)两数相减后比较大小?●ZF=1时,说明两数是相等的;●ZF=0时:无符号数时,CF=0,被减数大;CF=1,被减数小。
带符号数时,SF=OF=0或SF=OF=1,被减数大;SF=1,OF=0或SF=0,OF1,被减数小。
微型计算机原理第4章习题参考答案4.1已知某数据段中有COUNT1 EQU 16HCOUNT2 DW 16H下面两条指令有何异同。
MOV AX,COUNT1MOV BX,COUNT2解: 同:执行完之后,AX=BX=16H异:MOV AX,COUNT1向AX中传送的是立即数,而MOV BX,COUNT2向BX中传送的是变量内容。
4.2下列程序段执行后,寄存器AX、BX和CX的内容分别是多少?ORG 0202HDA-WORD DW 20HMOV AX,DA-WORD ;AX=0020HMOV BX,OFFSET DA-WORD ;BX=0202HMOV CL,BYTE PTR DA-WORD ;CL=20HMOV CH,TYPE DA-WORD ;CH=02H解: AX=0020H,BX=0202H,CX=0220H4.3设平面上有一点P的直角坐标(x,y),试编制完成以下操作的程序:如P点落在第I象限,则K=I;如P点落在坐标轴上,则K=0。
解:DAT SEGMENTmsg db 'please input number only!$'MSG1 DB 10,13,'INPUT X:$'MSG2 DB 10,13,'INPUT Y:$'xbuf db 20,0xbuf1 db 20 dup(?)ybuf db 20,0ybuf1 db 20 dup(?)D1 DB 10,13,'K='D2 DB '?,$'DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DA TBG: MOV AX,DATMOV DS,AXmov dx,offset msgmov ah,9int 21hMOV DX,OFFSET MSG1MOV AH,9INT 21Hmov dx,offset xbufMOV AH,0AHINT 21HMOV DX,OFFSET MSG2MOV AH,9INT 21Hmov dx,offset ybufMOV AH,0AHINT 21HCMP ybuf1,'0'JE PRO1CMP xbuf1,'0'JE PRO1cmp xbuf1,'-'Jz PRO2CMP ybuf1,'-'Je PRO4MOV D2,'1'JMP SHOWPRO1: MOV D2,'0'JMP SHOWPRO2: CMP ybuf1,'-'Je PRO3MOV D2,'2'JMP SHOWPRO3: MOV D2,'3'JMP SHOWPRO4: MOV D2,'4'SHOW: MOV DX,OFFSET D1MOV AH,9INT 21Hmov ah,4chint 21hCOD ENDSEND BG4.4 试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放于CHAR2开始的内存单元中。