微机原理第四章课后习题答案

合集下载

微机原理作业与答案第四章

微机原理作业与答案第四章

微机原理作业与答案第四章第四章汇编语⾔程序设计4-2 下列程序执⾏后,寄存器AX,BX,CX的内容分别是多少?ORG 0202HDA_WORD DW 20HMOV AX,DA_WORD ;(AX)=0020HMOV BX,OFFSET DA_WORD ;(BX)=0202H (BX)=0,这是书中的参考答案MOV CL,BYTE PTR DA_WORD ;(CL)=20H(因PTR,则字的第⼀字节)MOV CH,TYPE DA_WORD ;(CH)=2(变量类型数值);(CX)=0220H4-4 试编制⼀程序(不是程序段),把CHAR1中各⼩写字母分别转换为对应的⼤写字母,并存放在CHAR2开始的单元中DDD0 SEGMENTCHAR1 DB ‘abcdef’N EQU $-CHAR1;变量必须先定义后使⽤,⽽不能相反CHAR2 DB N DUP(0);不能把此句与上⼀句对调DDD0 ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126(代码段和堆栈段是不可少的)CSEG SEGMENTASSUME CS:CSEG,DS:DDD0,SS:STACK START: MOV AX,DDD0 MOV DS,AX ;MOV DX,AXMOV ES,AX ;只要SI,DI都⽤MOV SI,0 ;LEA SI,CHAR1MOV DI,0 ;LEA DI,CHAR2MOV CX,NAGAIN: MOV AL,CHAR1[SI] ; MOV AL,[SI]SUB AL,20HMOV CHAR2[DI],AL ; MOV [DI],ALMOV DL,AL ;不是必须的,但做实验是有⽤的。

MOV AH,2INC SIINC DI LOOP AGAINMOV AH,4CHINT 21H ;不是必须的CSEG ENDSEND START第⼆种⽅法:DDD0 SEGMENTCHAR1 DB ‘abcdef’N EQU $-CHAR1CHAR2 DB N DUP(0) DDD0 ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126(代码段和堆栈段是不可少的)CSEG SEGMENTASSUME CS:CSEG,DS:DDD0,SS:STACKSTART: MOV AX,DDD0 MOV DS,AXMOV ES,AXLEA SI,CHAR1LEA DI,CHAR2MOV CX,NCLD ;不写(隐含)也是0(递增)但不能STDAGAIN: LODSB ;执⾏⼀次,隐含修改SISUB AL,32stosb ;MOV [DI],AL;执⾏⼀次, 隐含修改DInop ;INC DILOOP AGAIN ;LOOP指令只修改CX,不管SI,DIMOV AH,4CHINT 21H ;不是必须的CSEG ENDSEND START4-6在BUF地址处起,存放有100个字节的字符串,设其中有⼀个以上的“A”字符,编程查找出第⼀个“A”字符相对起始地址的距离,并将其存⼊LEN单元。

单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章4-2 试述指令MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。

4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示源操作数所在存储器单元的地址。

MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。

4-4 说明一下指令中源操作数所在的存储器类型。

(1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。

(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。

(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。

(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。

4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘只能INC A/direct/Rn/@Ri/DPTR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘,CJNE指令格式只能是CJNE A/Rn/@Ri,#data,rel或CJNE A,direct,rel(8)POP A ; ✘只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘rel的范围是-128~127(用补码表示其值)共256B范围4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。

微机原理 第4章作业答案

微机原理 第4章作业答案

第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的值。

微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)

微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)

微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)第4章汇编语言程序设计习题与参考答案1、指出以下数据定义伪指令所分配的字节数(8086系统)。

(1)DATA1 DB 10,?,‘A’(2)DATA2 DW 10 DUP(2,3 DUP(?),1)(3)DATA3 DB ‘HELLO,WORLD!’,‘$’(4)DATA4 DW D ATA4解:(1)3字节;(2)100字节;(3)13字节;(4)2字节。

2、指出以下数据定义伪指令所分配的字节数(80386系统)。

(1)DATA1 DF 12,34,56(2)DATA2 DF D ATA2(3)DATA3 DQ 0,10 DUP(?)(4)DATA4 DT 0,1,2解:(1)18字节;(3)6字节;(3)88字节;(4)30字节。

3、指出以下指令中哪些是无效的,并说明原因。

(1)ADDR DB $(2)DATA DB F0H,12H(3)1_DATA DW 1234H(4)@VAR DW V AR1 ;VAR1为一个字节变量(5)MOV AX,[10-VAR1] ;VAR1为一个字变量(6)MOV BX,[VAR2*2+1] ;VAR2为一个字变量解:(1)非法,地址计数器$是32位数;(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;(3)非法,变量名非法,不能以数字开头;(4)合法;(5)非法,地址表达式不能是“常数-地址”;(6)非法,地址表达式不能出现乘法。

4、假设已定义数据段如下:DATA SEGMENTORG 100HDATA1 DB 10 DUP(1,2,3)DATA2 DW DATA1,$DATA ENDS且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。

请指出以下指令执行后,相应的寄存器中的内容。

(1)MOV AX,WORD PTR DATA1 ;(AX)=?(2)MOV BX,DATA2 ;(BX)=?(3)MOV CX,DATA2+2 ;(CX)=?(4)MOV DX,OFFSET DATA2 ;(DX)=?(5)MOV SI,SEG DATA1 ;(SI)=?(6)MOV DI,LENGTH DATA1 ;(DI)=?(7)MOV SP,TYPE DATA1 ;(SP)=?(8)MOV BP,SIZE DATA2 ;(BP)=? 解:(注意是16进制,算的时候要转换) (1)(AX)=0201H;(2)(BX)=0100H;(3)(CX)=0120H;(4)(DX)=011EH;(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。

微机原理及接口第四章习题答案

微机原理及接口第四章习题答案

微机原理及接口第四章习题答案“微机系统原理与接口技术”第四章习题解答1.判断下列陈述是否正确。

如果是错误的,请解释原因并改正。

(1)伪指令在汇编过程中不会产生二进制代码。

(2)宏和过程之间的相同之处在于,它们可以用来简化源程序的编写,简化目标代码。

(3)在计算机中,高级语言通常需要转换成汇编语言才能执行。

(4)汇编语言程序通常包括编辑、汇编、链接和调试。

回答:(1)正确。

(2)错误。

宏不能精简目标代码。

(3)错了。

高级语言程序在编译或解释后直接转换为目标代码。

(4)正确。

2.已知数据和符号的定义a1db?a2db8k1equ100判断以下说明的正确性和错误性,并解释错误说明的原因。

(1)mov(2)mov(3)movmov(4)cmp(5)k1k1,axa2,ahbx,k1[bx],dxa1,a2equ200回答:(1)错误。

K1是一个符号常量,相当于此处的立即数100,因此不能将其用作目标操作数。

(2)正确。

(3)对。

(4)错误。

a1、a2都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直接进行比较。

(5)错了。

除非使用purge释放原始值,否则无法重新分配使用EQ定义的符号。

3.若数据段中有定义num1equ23hnum2dw0则指令movnum2,num1的源、目操作数的寻址方式以及指令执行后num2+1单元的内容分别是什么?答:movnum2和num1指令的源操作数使用立即寻址,目标操作数使用直接寻址。

执行指令后,num2+1单元的内容为0。

4.设ds=6000h,bx=8432h,ss=5000h,sp=3258h,内存69632h~69635h单元的内容依次是00h、11h、22h、33h。

4字节指令calldwordptr[bx+1200h]本身位于2000h:3250h处的双字单元中。

当8086执行该指令后转移至子程序入口时,cs、ip、ss、sp各寄存器以及栈顶2个字单元的内容分别是多少?答:执行结果为CS=3322h,IP=1100h,SS=5000h,SP=3254h。

微机原理第四章习题及答案

微机原理第四章习题及答案

第四章8086/8088指令系统一、选择题1、在数据传送指令中要注意:立即数只能作为( A )。

A.源操作数B.源操作数或目的操作数C.目的操作数D.源操作数和目的操作数2、对堆栈进行存取操作时需遵守的原则是( B )。

A.先进先出B.先进后出C.任意顺序D.以上都不对3、MOV AX,[BP+SI]指令源操作数隐含的段地址为( D )。

A.CS B.DS C.ES D.SS4、堆栈指针SP的作用是用来指示( C )。

A.栈底地址B.下一条要执行指令的地址C.栈顶地址D.上一条要执行指令的地址5、在指令MOV AX,0执行后,CPU状态标志位ZF的取值( D )。

A.为0 B.为1 C.不确定D.没影响6、下列寄存器组中,全部用于寄存器间接寻址方式中的为( C )。

A.AX,BX,CX,IP B.BX,BP,DS,SIC.BP,BX,SI,DI D.IP,SP,AX,BX7、若8086 CPU工作于最小方式,则执行指令OUT DX,AL时其引脚信号M /IO和DT/R的电平应是( B )。

A.低,低B.低,高C.高,低D.高,高8、执行指令MOV AX,DATA后,AX中值为变量DATA的( D )。

A.段值B.偏移量值C.数据类型值D.地址DATA单元中的值9、下列指令中,不正确的指令是。

( D )A.MOV AX,BX B.MOV AX,[BX]C.MOV AL,BL D.MOV AL,[BL]10、8086CPU在执行MOV AL,[BX]指令的总线周期内,若BX存放的内容为1010H,则BHE和A0的状态是( C )。

A.0,0 B.0,1C.1,0 D.1,111、若DF=1,执行串操作指令MOVSW时,地址指针变化方式是( D )。

A.SI=SI + 1,DI = DI + 1B.SI = SI + 2,DI = DI + 2C.SI = SI-1,DI = DI-1D.SI = SI-2,DI = DI-212、条件转移指令JNE的条件是( C )。

微机原理 第四章答案

微机原理 第四章答案
14、设(BX)=0400H,(DI)=003CH,执行 LEA BX,[BX+DI+0F62H]后,(BX)=? (BX)=139E H
15、设(DS)=C000H,(C0010H)=0180H, (C0012H)=2000H,执行LDS SI,[10H]后, (SI)=?, (DS)=? (SI)=0180 H,(DS)=2000 H
REP STOSW 程序段的功能:
将起始地址为0404 H开始的80 H(128)个字单元清成0 或将起始地址为0404 H开始的100 H(256)个字节单元清成0
11
第4章 微型计算机原理作业情况
13、 设(BX)=6B30H,(BP)=0200H,(SI)=0046H, (SS)=2F00H,(2F246H)=4154H,试求执行 XCHG BX,[BP+SI]后, (BX)=?,(2F246H)=? (BX)=4154H (2F246H)=6B30H
6
第4章 微型计算机原理作业情况
8、分别执行下列指令,试求AL的内容及各状态标志位的状态。
(1) MOV AL,19H ;
ADD AL,61H ;(AL)=7AH
OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0
(2) MOV AL,19H ;
SUB AL,61
;(AL)=0DCH
OF=0 SF=1 ZF=0 AF=1 PF=0 CF=1
(1) MOV CL,20H[BX][SI] ;(CL)=0F6 H
(2) MOV [BP][DI],CX
;(1E4F6 H)=5678 H
(3) LEA BX,20H[BX][SI] ;(BX)=0056 H
MOV AX,2[BX]
;(AX)=1E40 H

第四章微机原理习题答案

第四章微机原理习题答案

第四章习题答案一、写出下列指令的源操作数和目的操作数的寻址方式。

1. MOV AL,AH ;寄存器寻址2. MOV AL,TABLE[SI];寄存器相对寻址3. MOV [SI][BP],CL ;基址变址寻址4. AND AL,0FH ;立即数寻址5. ROR AL,CL ;寄存器寻址6. JNL NEXT ;程序地址相对寻址7. MOV DI,12 ;立即数寻址8. MOV [DI+1],BYTE PTR 12 ;基址相对寻址9. JMP WORD PTR [BX];程序地址间接寻址10.LOOP AGAIN ;程序地址相对寻址二、问答题1. 8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?答:凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。

这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。

2. 用乘法指令时,特别要注意先判断用有符号数乘法指令还是用无符号数乘法指令,这是为什么?答: 用乘法指令时,特别要注意先判断用有符号数乘法指令还是用无符号数乘法指令,是因为在执行乘法运算时,要想使无符号数相乘得到正确的结果,有符号数相乘时,就得不到正确的结果;要想使有符号数相乘得到正确的结果,无符号数相乘时,就得不到正确的结果。

3.设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSH BX指令后,栈顶地址和栈顶2个字节的内容分别是什么?答: 当前栈顶的地址2010H*16+FE00H=2FF00H;执行PUSH BX指令后,堆栈地址指针SP 减2,则栈顶地址为2FEEDH;栈顶2个字节的内容为57H、34H。

三、编程练习1.串操作指令设计实现以下功能的程序段:首先将100H个数从2170H处搬到1000H处,然后,从中检索相等于AL中字符的单元,并将此单元值换成空格符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章课后作业(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。

9.JMP FAR PTR ABCD (ABCD是符号地址)的转移方式是什么?答:段间直接转移。

10.按下列指令写出相应指令或程序段。

(1)写出两条使AX寄存器内容为0的指令。

(2)使BL寄存器中的高、低4位互换。

(3)现有两个带符号数分别在X1和X2变量中,求X1/X2,商和余数分别送入Y1和Y2中。

(4)屏蔽BX寄存器中的b4、b6、b11位。

(5)将AX寄存器的b4、b14位取反,其它位不变。

(6)测试DX寄存器的b0、b9位是否为“1”。

(7)使CX寄存器中的整数变为奇数(如原已经是奇数,则不变)。

答:(1)MOV AX,0 XOR AX,AX(2)MOV CL,4ROL BL,CL(3)MOV AX,X1CWDIDIV X2MOV Y1,AXMOV Y2,DX(4)AND BX,1111 O111 1O10 1111(5)XOR AX,0100 0000 0001 0000(6)MOV AX,DXRCR AX,1JC B0Y ;转向表示b0是1的标号为B0Y的程序段MOV AX,DXMOV CL,10ROR AX,CLJC B9Y ;转向表示b9是1的标号为B9Y的程序段(7)OR CX,0001H11.写出把首地址为BLOCK的字数组的第6个字送入AX寄存器的指令,要求使用下列寻址方式。

(1)寄存器间接寻址;(2)直接寻址;(3)基址寻址;(4)基址变址相对寻址。

答:(1)LEA DI,BLOCKADD DI,10MOV AX,[DI](2)MOV AX,[BLOCK+10](3)LEA BX,BLOCKADD BX,10MOV AX,[BX](4)LEA BX,BLOCKMOV SI,0MOV AX,[BX+SI+0AH]12. 指令“SUB AX,BX”执行后,CF=1,说明最高有效位发生了什么现象?对无符号数来说,操作结果发生了什么现象?答:CF=1说明最高有效位发生进位;对无符号数,操作结果产生溢出。

13. 在1000H单元中有一条二字节指令JMP SHORT LAB,如果其中的偏移量分别为30H、6CH、0B8H,则转向地址LAB的值分别为多少?答:1000H*10H+2H+30H=10032H1000H*10H+2H+6CH=1006EH1000H*10H+2H+0B8H=100BAH14.(AL)=9AH,(BL)=0BCH,当分别进行下列指令运算后,写出标志位ZF、PF、CF、SF的内容。

(1)ADD AL,BL(2)SUB AL,BL(3)AND AL,BL(4)OR AL,BL(5)XOR AL,BL答:(AL)=9AH=1001 1010 ;(BL)=0BCH=1011 1100(1)1001,1010+1011,1100=1,0101,0110所以ZF=0,PF=1,CF=1,SF=0(2)1001,1010-1011,1100=1101,1110所以ZF=0,PF=1,CF=1,SF=1(3)1001,1010和1011,1100按位与得1001,1000所以ZF=0,PF=0,CF=0,SF=1(4)1001,1010和1011,1100 按位或得1011,1110所以ZF=0,PF=1,CF=0,SF=1(5)1001,1010和1011,1100按位异或得0010,0110所以ZF=0,PF=0,CF=0,SF=0(1)MOV DX,2[BX] ;DX=06H BX=0004H(2)PUSH CX ;SP=1FFEH [SP]=0FFH(3)MOV CX,BX ;CX=0004H BX=0004H(4)TEST AX,01 ;AX=8094H CF=0(5)MOV AL,[SI] ;AL=87H(6)ADC AL,[DI] ;AL=0CCH CF=0DAA ;AL=0011 0010(7)INC SI ;SI=0009H(8)DEC DI ;DI=0009H(9)MOV [DI],AL ;[DI]=94H DX=17C6H(10)XCHG AX,DX ;AX=17C6H DX=8094H(11)XOR AH,BL ;AH=84H BL=04H(12)JMP DX ;IP=17C6H16.如果TABLE为数据段中0032单元的符号名,其中存放的内容为1234H。

当执行指令“MOV AX,TABLE”和“LEA AX,TABLE”后,(AX)中的内容分别为多少?答:执行“MOV AX,TABLE”后(AX)=1234H;执行“LEA AX,TABLE”后(AX)=0032H。

17.设(SP)=0FFFEH,执行CALL FAR PTR OPRD后,(SP)=?答:(SP)=SP-04H=0FFFAH18.若某数据区的开始地址为A7F0H:2B40H,则该数据区的首字单元和32个字的末字单元的物理地址分别为多少?答:首字单元物理地址为:AAA40H、AAA41H;32字的末字单元物理地址为:AAAA2H、AAAA3H。

19、若(SP)=2000H,(AX)=3355H,(BX)=4466H,下列程序段:PUSH AXPUSH BXPOP DX执行后有关寄存器内容为(AX)=?,(DX)=?,(SP)=?。

答:(AX)=3355H (DX)=4466H (SP)=1FFEH20.设(SS)=2250H,(SP)=0140H,若在堆栈中存入5个数据,则栈顶的物理地址是多少?如果再从堆栈中取出3个数据,则栈顶的物理地址是多少?答:存入五个数据后,栈顶的物理地址为:22636H;再取出三个数据后,栈顶的物理地址为:2263CH。

21.分别指出下列两个程序段的功能。

(1)MOV CX,10 (2)CLDLEA SI,FIRST LEA DI,[0404H]LEA DI,SECOND MOV CX,0080H REP MOVSB XOR AX,AXREP STOSW答:(1)将数据段中首地址为FIRST的10个字节数据传送到附加段首地址为SECOND的内存区中。

(2)将附加段从偏移地址地址为0404H开始向后的128个字存储单元清零。

22.若(SP)=2800H,使用两种方法实现(SP)=27FEH。

答:(1)MOV AX,1234HPUSH AX(2)MOV AX,1234HCALL AX23.设(IP)=3D8FH,(CS)=4050H,(SP)=0F17CH。

当执行完CALL 2000:009AH 后,IP、CS、SP、[SP]、[SP+1]、[SP+2]和[SP+3]的内容分别为什么?答:IP=009AH,CS=2000H,SP=0F178H,[SP]=8FH,[SP+1]=3DH,[SP+2]=50H,[SP+3]= 40H24.(1)试编写汇编程序段完成以下功能:将数据段中100个字符的字符串从内存的BUFFER1搬移到内存的BUFFER2中去;(2)试编写汇编程序段完成以下功能:将数据段中100个字的数据块BLOCK1搬移到同一个数据段的BLOCK2中去。

答:(1)LEA SI,BUFFER1LEA DI,BUFFER2MOV CX,100CLDREP MOVSB(2)LEA SI,BLOCK1LEA DI,BLOCK2MOV CX,100CLDREP MOVSW25. 试编写汇编程序段完成以下功能:比较DEST和SOURCE中的500个字节,找出第一个不相同的字节,如果找到,则将SOURCE中的这个数送AL中。

答: LEA SI,DESTLEA DI,SOURCEMOV CX,500CLDREPE CMPSBJCXZ NODEC DIMOV AL,BYTE PTR [DI]NO: HLT26. 试编写汇编程序段完成以下功能:求最大值,若自BLOCK开始的内存缓冲区中,有100个带符号的数,希望找到其中最大的一个值,并将它放到MAX单元中。

答: LEA DI,BLOCKMOV CX,100MOV AX,[DI]CHECK: ADD DI,2CMP AX,[DI]JGE NEXTMOV AX,[DI]NEXT: LOOP CHECKMOV MAX,AX27.指出下列32位指令源操作数的寻址方式,并指出指令执行后有关寄存器的内容。

(1)LEA ECX ,[EAX*2+14CH] ;执行前:(EAX)=0548 901AH(ECX)=xxxx xxxxH(2)LEA EAX ,TAB[EDX][4*ESI] ;执行前:(EAX)=xxxx xxxxH(ESI)=0653 3A44H(EDX)=0892 ABDFH[TAB] =0000 0120H(3)MOV EAX,mem32 ;执行前:(EAX)=xxxx xxxxH[men32]=0892 ABDFH(4)PUSH 12345678H ;执行前:(ESP)=1234 5678HSS:[FFFF F31CH]=xxxx xxxxH 答:(1)寄存器相对寻址。

相关文档
最新文档