微机原理第4章练习题
微机原理第四章课后习题答案
第四章课后作业(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。
微机原理第四章练习题及解
微机原理第四章练习题及解一:单项选择题●汇编源程序文件的扩展名是( C )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●源程序文件汇编后的目标文件的扩展名是( B )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●目标文件连接后的可执行文件的扩展名是( D )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●下列可作为标识符用的字符串是( C )。
A:MOV B:ZF C:FAH D:PTR●下列为寄存器名的字符串是( B )。
A:ZP B:BP C:AP D:CP●下列为状态标志的字符串是( A )。
A:ZP B:BF C:DF D:TF●下列为控标志的字符串是( D )。
A:ZP B:SF C:OF D:TF●下列为指令助记符的字符串是( C )。
A:ADCC B:AAAA C:SUB D:POOP●下列为运算符的字符串是( B )。
A:ADC B:PTR C:OAG D:LOOP●定义字类型的伪指令符是( B )。
A:DB B:DW C:DD D:DQ●说明字节类型的伪指令符是( C )。
A:WORD B:DWORD C:BYTE D:SHOR●返回变量段属性的伪指令符是( B )。
A:OFFSET B:SEG C:TYPE D:SIZE●定义过程结束的伪指令符是( C )。
A:END B:ENDS C:ENDP D:ENDM●下列为段定义的伪指令是( B )。
A:PROC B:SEGMENT C:ASSUME D:STRUC●下列为符号定义的伪指令是( B )。
A:ORG B:EQU C:STR D:RET二:填空题●将指令助记符翻译为指令机器码的过程称为(汇编)。
●汇编程序的功能是输入扩展名为ASM的(汇编源程序)文件,输出扩展名为OBJ的(目标代码)文件和扩展名为LST的(列表)文件。
●汇编源程序中的保留字类型有(寄存器名)、(标志名)、(指令助记符)、(伪指令符)和(运算符)。
《微机原理》第04章 习题
习题1 习题
1.编写 编写8086汇编语言程序 , 将寄存器 的高 位传 汇编语言程序, 的高8位传 编写 汇编语言程序 将寄存器AX的高 送到寄存器BL, 位传送到寄存器DL 送到寄存器 ,低8位传送到寄存器 位传送到寄存器
习题2 习题
2.将寄存器 的内容从低到高位的顺序分成 组 , 将寄存器DX的内容从低到高位的顺序分成 将寄存器 的内容从低到高位的顺序分成4组 并将各组数分别送到寄存器AL,BL,CL和 DL( 如 并将各组数分别送到寄存器 和 ( DX=6D82H,分成:06H、0DH、08H、02H)。 ,分成: 、 、 、 )
MOV AX,MEN MOV BX,AX SHR AX,1 JC PO_1 MOV MEMB,BX JMP DONE PO_1: MOV MEMA,BX : DONE:
习题4 习题
4.试统计 个数中偶数的个数,并将结果在屏幕显示 试统计9个数中偶数的个数 试统计 个数中偶数的个数,
SI BUFF 3BH 47H 8DH -75 0A4H 69H -2EH 0CCH 200 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H
逻辑左移
CF
0 1 XXX XXXX 0 XXX XXXX
SHL AL,1 ADC DL,0
ADC指令实现 指令实现DL+CF+0 指令实现 如果是负数, 为 , 个数记录加1 如果是负数,CF为1,则DL个数记录加 个数记录加
DATA SEGMENT BUFF DW 6700H,9E00H,-6A00H,0A0BH,6D00H NUM DB $-BUFF MEM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA , START:MOV AX,DATA MOV DS,AX MOV CX,NUM LEA BX,BUFF
微机原理 第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的值。
微机原理第四章习题及答案
第四章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 )。
微机原理第4章练习题及答案
微机原理第4章练习题及答案第4章 80x86指令系统一、自测练习题㈠选择题 1.MOV AX,[BX+SI]的源操作数的物理地址是( )。
A.(DS)×16+(BX)+(SI) B. (ES)×16+(BX)+(SI) C.(SS)×10H+(BX)+(SI) D.(CS)×10H+(BX)+(SI)2.MOV AX,[BP+Sl]的源操作数的物理地址是( )。
A.(DS)×10H+(BP)+(SI) A. (ES)×16+(BP)+(SI) C.(SS)×16+(BP)+(SI) D.(CS)×10H+(BP)+(SI) 3.MOV AX,ES:[BX+SI]的源操作数的物理地址是( )。
A.(DS)×16+(BX)+SI) B.(ES)×10H+(BX)+(SI) C.(SS)×10H+(BX)+SI) D.(CS)×16+(BX)+(SI)4.JMP WORD PTR[DI]是( )。
A.段内间接转移B.段间间接转移C.段内直接转移D.段间直接转移5.JMP FAR PTR BlOCK(BLOCK是符号地址)是( )。
A.段内间接转移B.段间间接转移C..段内直接转移D.段间直接转移6.INC指令不影响( )标志。
A.OF B.CF C.SF D.ZF 7.条件转移指令JNE的测试条件是( )。
A.ZF=1 B.CF=0 C.ZF=0 D.CF=1 8.下列指令中,有语法错误的是( )。
A.MOV [SI],[DI] B.IN AL,DX C.JMP WORD PTR[BX+8] D.PUSH WORD PTR 20[BX+S1] 9.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据21H的物理地址是。
A.20102H B.20101H C.200FEH D.200FFH 10.对于下列程序段:AGAIN:MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用指令完成同样的功能。
微机原理 第4章 总线 习题及参考
第四章总线1. 什么是总线?答:总线是许多信号线的集合,是微机系统中连接各部件的信息通道,通过它实现数据的相互交换。
具体地说,总线是CPU内部各组成部件之间、微机芯片之间、系统各模块之间,或各设备之间传递数据信息、地址信息、控制和状态信息的通道。
2. 总线结构的优点是什么?答:概括起来有以下四点:1)支持模块结构的设计方法,可以简化系统设计;2)标准总线得到多厂商的广泛支持,便于生产与之兼容的硬件板卡和软件,具有开放性和通用性;3)便于模块的专业化生产和产品的升级换代,便于故障诊断和维修,灵活性好。
4)降低了设计及系统成本。
3. 按照布局范围,总线分为哪几种类型?答:四种类型:①内部总线——是处于CPU内部、用来连接片内运算器和寄存器等各个功能部件的总线。
内部总线的对外引线称为CPU总线。
②局部总线——是主机板上的信息通道,连接主机板上各个主要部件,而且通过扩展槽连接多种适配器(局部总线是组成微机系统的主框架)。
③系统总线——是多处理器系统中连接各CPU插件板的信息通道,用来支持多个CPU的并行处理。
④外部总线——是微机和外部设备之间或者几个微机系统之间的信息通道,又称通信总线。
4. 微机系统中常用的系统总线有哪几种?答:ISA总线、EISA总线、PCI总线、AGP总线等。
5. 按照功能,总线可分为哪几类?答:分为数据总线、地址总线和控制总线等三类。
数据总线、地址总线和控制总线分别用来传输数据、地址、命令和状态信号。
6. 为什么引入PCI总线有利于提高微机系统的整体工作性能和效率?答:随着各种应用软件的发展,需要在CPU与外设之间进行大量的高速数据传输。
以往的ISA总线及以后发展的EISA总线都未能解决总线的高效率传输问题。
PCI总线提供了CPU 与外设之间的高速通道,有利于提高微机系统的整体工作性能和效率。
7. 总线的性能主要从哪几方面来衡量?答:三方面:①总线宽度——指一次可以同时传输的数据位数。
微机原理 第四章答案
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
微机原理习题集(4章)
一.单项选择题:1、在汇编语言程序设计中,变量定义时,以下为非法的类型属性是__C__;A 字节B 字C 字符D 双字2、以下哪个元素是汇编语言中语句的必要组成部分_B___;A 标号B 操作助记符C 操作数D 注释3、下列指令错误的是__B__;A INC WORD PTR [SI]B PUSH ALC POP CXD JMP BX4、下面说法正确的是_D___;A 低级语言更接近于自然语言。
B 机器语言编写的程序可以应用于不同微处理器的计算机系统。
C 高级语言编写的程序依赖于微处理器的型号。
D 程序在准备执行时,必须存储于存储器中。
5、以下指令错误的是_D___;A MOV AX,2000HB MOV [BP],DLC MOV DS,AXD MOV 20H,AL6、下面叙述错误的是_C___;A 宏指令是用户自己定义的B 注释是以分号开头的。
C 名称在语句中是必须的D 每条语句都必须有操作助记符。
7、条件转移指令“JS”的转移条件是_B___;A SF=0B SF=1C CF=0D CF=18、在微计算机中用来存放源字符串地址的偏移量的寄存器是_C___;A SPB BPC SID DI9、汇编程序是一个__B__;A 源程序B 语言加工程序C 连接程序D 目标程序10、下列字符串能用于标识符的是_B___;A LENGTHB MOVEC 13AD SEGMENT11、若要对操作数清0,一般对操作数进行__C__运算。
A 相与B 相或C 异或D 移位12、汇编语言编辑程序输出的文件类型是_A___;A .asmB .obj C.exe D .c13、堆栈的存取规则正确的是_D___;14、 A FIFO B FILO CLILO D以上都不对14、以下指令不是逻辑运算指令的是__D__;A XOR AL,3B NOT ALC OR AL,3D CWD15、在指令“MOV AX,INBUFF”中,变量INBUFF 的段是_B___ ;A CSB DSC SSD ES16、若READY为低电平,此时CPU执行___B_周期;A T3 B TWC T4D T117、连接程序输出的文件类型是_C___;A .asmB .obj C.exe D .c18、已知程序段:_A_MOV AX,0FF60HSTCMOV DX,96XOR DX,0FF00HSBB AX,DX程序执行后AX=____,CF=____。
微机原理作业与答案第四章
第四章汇编语言程序设计4-2 下列程序执行后,寄存器AX,BX,CX的内容分别是多少?D SEGMENT AT 0202H;定位数据段地址ORG 0202H ;定位偏移地址DA_WORD DW 20HMOV AX,DA_WORD ;(AX)=0020HMOV BX,OFFSET DA_WORD ;(BX)=0202HMOV CL,BYTE PTR DA_WORD ;(CL)=20H(将变量DA_WORD的属性改变为字节型)MOV CH,TYPE DA_WORD ;(CH)=2(变量类型数值);(CX)=0220H4-4 试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放在CHAR2开始的单元中(题目要求:不改变CHAR1的内容)方法1,小写字母转换一个输出显示一个,前3种方法均使用了AL寄存器D SEGMENTCHAR1 DB "abcdefghijklmnopqrstuvwxyz"N EQU $-CHAR1;变量必须先定义后使用,而不能相反CHAR2 DB N DUP(0) ; ;不能把此句与上一句对调,CHAR2 DB$-CHAR1有;的同学这样写,错在哪D ENDSS SEGMENT STACKDB 200 DUP(0)S ENDSC SEGMENTASSUME CS:C,DS:D,SS:S ;ASSUME是伪指令,后面不能写冒号START: MOV AX,DMOV DS,AX;MOV ES,AX ;只要用到串操作指令且DILEA SI,CHAR1 ;MOV SI,OFFSET CHAR1LEA DI,CHAR2 ; MOV DI,OFFSET CHAR2MOV CX,N ;$-CHAR1,不可以AGAIN:MOV AL,[SI]SUB AL,20H ;AND AL,5FH有的同学是这样实现的MOV [DI],ALMOV DL,ALMOV AH,2INT 21H ;从屏幕显示INC SIINC DILOOP AGAINMOV AH,4CHINT 21H ; ;不是必须的C ENDSEND START方法2:使用通用数据传送指令MOVD SEGMENTCHAR1 DB ‘abcdefghijklmnopqrstuvwxyz’N EQU $-CHAR1;变量必须先定义后使用,而不能相反CHAR2 DB N DUP(0);不能把此句与上一句对调D ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126(代码段和堆栈段是不可少的)C SEGMENTASSUME CS:C ,DS:D ,SS:SSTART: MOV AX,DMOV DS,AXMOV ES,AX ;只要用到串操作指令且DIMOV SI,0 ;MOV DI,0 ;MOV CX,NAGAIN: MOV AL,CHAR1[SI] ;SUB AL,20HMOV CHAR2[DI],AL ;INC SIINC DI LOOP AGAINMOV AH,4CHINT 21H ;不是必须的C ENDSEND START第3种方法:使用串的读写指令LODSB STOSBD SEGMENTCHAR1 DB ‘abcdef’N EQU $-CHAR1CHAR2 DB $-CHAR1 DUP(0) D ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS ;P126(代码段和堆栈段是不可少的)C SEGMENTASSUME CS:C,DS:D,SS:SSTART: MOV AX,DMOV DS,AXMOV ES,AXMOV SI,OFFSET CHAR1 ;LEA SI,CHAR1MOV DI, OFFSET CHAR2 ;LEA DI,CHAR2MOV CX,NCLD ;不写(隐含)也是0(递增)但不能STDAGAIN: LODSB ;执行一次,隐含修改SISUB AL,32STOSB ;MOV [DI],AL;执行一次, 隐含修改DI INC DILOOP AGAIN ;LOOP指令只修改CX,不管SI,DIMOV AH,4CHINT 21H ;不是必须的C ENDSEND START第四种方法2006级,没有显示使用MOVSB指令D SEGMENTCHAR1 DB "abcdefghijklmnopqrstuvwxyz"N EQU $-CHAR1CHAR2 DB N DUP(0)D ENDSS SEGMENT STACKDB 200 DUP(0)S ENDSC SEGMENTASSUME CS:C,DS:D,SS:SSTART:MOV AX,DMOV DS,AXMOV ES,AXLEA SI,CHAR1LEA DI,CHAR2MOV CX,NAGAIN:MOVSB ; SUB [SI],20HDEC DI ; MOVSBSUB BYTE PTR[DI],20H ;LOOP AGAIN 错在哪里?结果如何?INC DILOOP AGAINMOV AH,4CHINT 21HC ENDSEND START方法5: 只用一个地址指针SID SEGMENTCHAR1 DB "abcdefghijklmnopqrstuvwxyz"N EQU $-CHAR1CHAR2 DB N DUP(0)D ENDSS SEGMENT STACKDB 200 DUP(0)S ENDSC SEGMENTASSUME CS:C,DS:D,SS:SSTART:MOV AX,DMOV DS,AXMOV ES,AXMOV SI,0MOV CX,NAGAIN:MOV AL,CHAR1[SI] ;只用一个地址指针,SI[CHAR1]是错误的SUB AL,20HMOV CHAR2[SI],ALINC SILOOP AGAINint 3MOV AH,4CHINT 21HC ENDSEND START有的同学按数据是由键盘录入的来考虑的,也可行,程序中还有不少问题方法6:由键盘输入小写字母再转换输出,回车符也占一个字节,输入需要小写转换成大写字母的内容从输入串的第3个元素开始D SEGMENTA DB"CHAR1",0DH,0AH,"$"B DB"CHAR2",0DH,0AH,"$"CHAR1 DB 11,?,11 DUP(0);准备输入10个小写字母CHAR2 DB 10 DUP(0)D ENDSS SEGMENT STACKDB 200 DUP(0)S ENDSC SEGMENTASSUME CS:C,DS:D,SS:SSTART:MOV AX,DMOV DS,AXMOV ES,AXMOV DX,OFFSET AMOV AH,9INT 21HLEA DX,CHAR1MOV AH,0AHINT 21H ;由键盘输入字符串,10个字母(显示),1个回车,共11个字节LEA SI,CHAR1[2]LEA DI,CHAR2MOV CX,10 ;需要转换的字符长度为10个字节AGAIN:MOV AL,[SI]SUB AL,20HMOV [DI],ALINC SIINC DILOOP AGAIN ; 将小写字母字符串转换成大写字母字符串MOV BYTE PTR[DI],0DHINC DIMOV BYTE PTR[DI],0AHINC DIMOV BYTE PTR[DI],'$' ;必须指明数据类型MOV DX,OFFSET CHAR2MOV AH,9INT 21H ;输出'$'结尾的大写字母字符串int 3MOV AH,4CHINT 21HC ENDSEND START4-6在BUF地址处起,存放有100个字节的字符串,设其中有一个以上的“A”字符,编程查找出第一个“A”字符相对起始地址的距离,并将其存入LEN单元。
第四章微机原理习题答案
第四章习题答案一、写出下列指令的源操作数和目的操作数的寻址方式。
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. 试分析下列程序段:ADD AX,BXJNC L2SUB AX,BXJNC L3JMP SHORT L5L2:……L3:……L5:……如果AX、BX的内容给定如下:AX BX(1)14C6H 80DCH(2)B568H 54B7H问该程序在上述情况下执行后,程序转向何处?解:(1)转向L2因为(AX)+(BX)没有进位。
(2)转向L5因为(AX)+(BX)= 0A1FH,有进位。
然后(AX)-(BX)有进位。
2. 编写程序,使用三种以上的方法,将存储器中DS:2000H开始的地址单元中的100字节数据复制到ES:3000H开始的存储器地址单元中。
解:DATA SEGMENTORG 2000HD1 DB 100 DUP(?)DATA ENDSEXTRA SEGMENTORG 3000HD2 DB 100 DUP(0)EXTRA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EXTRA START: MOV AX, DATAMOV DS, AXMOV AX, EXTRAMOV ES, AXLEA SI, D1LEA DI, ES:D2MOV CX, 100;L1: MOV AL, [SI]; MOV ES:[DI], AL; INC SI; INC DI; LOOP L1REP MOVSBHLT(1)利用通用传送指令MOV MOV SI,2000HMOV DI,3000HMOV CX,100AA:MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP AAHLT(2)利用交换指令XCHGMOV SI,2000HMOV DI,3000HMOV CX,100AA:MOV AL,[SI]XCHG [DI],ALINC SIINC DILOOP AAHLT(3)利用换码指令XLATMOV BX,2000HMOV DI,3000HMOV CX,100AA:XOR AL,ALXLATMOV [DI], ALINC BXINC DILOOP AAHLT(4)利用堆栈实现数据传送MOV SI,2000HMOV DI,3000HMOV CX,50AA:PUSH [SI]POP [DI]INC SIINC SIINC DIINC DILOOP AAHLT(5)利用串操作指令REP MOVSBMOV SI,2000HMOV DI,3000HMOV CX,100CLD ;DF=0,SI、DI自动+1REP MOVSBHLT3. 在DA1开始的4个单元中存放着一个32位数,求出其中的“1”的个数,并存入COUNT单元中。
《微机原理与接口技术》第四章习题集与解答
习题集解答第五章汇编语言程序设计1.从4000H单元开始定义数据段如下,请画出所定义存储器的分配图。
BUF SEGMENTDAl DW 3456HDA2 DB 2 DUP(7,8)BUF ENDS答:存储器的分配图2.对于习题1的定义,请说明下列每条指令执行后的结果。
1、MOV AX,SEG DAl2、MOV AX,SEG DA23、MOV BX,OFFSET DAl4、MOV BX,OFFSET DA25、MOV CX,TYPE DAl6、MOV CX,TYPE DA27、MOV DX,LENGTH DAl8、MOV DX,LENGTH DA29、MOV AX,SIZE DAl ‘10、MOV AX,SIZE DA2答:1、(AX)=(DS)2、(AX)=(DS)+23、(BX)=4000H4、(BX)=4002H5、(CX)=26、(CX)=17、(DX)=28、(DX)=49、(AX)=210、(AX)=43.已知数据定义如下,请计算变量PL的值是多少?DATA DB ‘AB’DATAl DB 10 DUP(?)PL EQU $-DATA答:PL=DATA+12-DATA=124.已知A=25、B=15、C=4,请计算下列表达式的值。
(1) A × 50+B (2) A MOD C+B(3)(A+4)×B-3 (4) B/3 MOD 4(5)A LE B (6) A XOR 50答:(1) A ×50+B= 25 ×50+15=1250+15=12515 (2) A MOD C+B=25 MOD 4+15=1+15=16(3)(A+4)×B-3 =(25+4)×15-3 =1500-3=1497(4) B/3 MOD 4 =15/3 MOD 4 =5 MOD 4 =1(5)A LE B =25 LE 15 = 0(6) A XOR 50 = 25 XOR 50 = 435.已知内存DATA单元存放一个字数据,请统计其中含有0的个数,并送人RESULT单元的程序。
微机原理与接口技术习题答案4
第4章汇编语言程序设计1.已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。
解:BUF DB "BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L12.利用移位、传送和相加指令实现AX的内容扩大10倍。
解:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。
XOR DX,DXSHL AX, 1RCL DX, 1MOV BX,AXMOV CX,DXSHL AX, 1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX3.在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。
解:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX, V AR[SI+2]JAE L1XCHG AX, V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI], AXMOV AX,V AR[SI+2]CMP AX, V AR[SI+4]JAE L3XCHG AX, V AR[SI+4]L3:MOV V AR[SI+2], AX4.编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。
微机原理第4章练习题及答案
第4章 80x86指令系统一、自测练习题㈠选择题1.MOV AX,[BX+SI]的源操作数的物理地址是( )。
A.(DS)×16+(BX)+(SI) B. (ES)×16+(BX)+(SI)C.(SS)×10H+(BX)+(SI) D.(CS)×10H+(BX)+(SI) 2.MOV AX,[BP+Sl]的源操作数的物理地址是( )。
A.(DS)×10H+(BP)+(SI) A. (ES)×16+(BP)+(SI)C.(SS)×16+(BP)+(SI) D.(CS)×10H+(BP)+(SI) 3.MOV AX,ES:[BX+SI]的源操作数的物理地址是( )。
A.(DS)×16+(BX)+SI) B.(ES)×10H+(BX)+(SI)C.(SS)×10H+(BX)+SI) D.(CS)×16+(BX)+(SI)4.JMP WORD PTR[DI]是( )。
A.段内间接转移B.段间间接转移C.段内直接转移D.段间直接转移5.JMP FAR PTR BlOCK(BLOCK是符号地址)是( )。
A.段内间接转移B.段间间接转移C..段内直接转移D.段间直接转移6.INC指令不影响( )标志。
A.OF B.CF C.SF D.ZF7.条件转移指令JNE的测试条件是( )。
A.ZF=1 B.CF=0 C.ZF=0 D.CF=1 8.下列指令中,有语法错误的是( )。
A.MOV [SI],[DI] B.IN AL,DXC.JMP WORD PTR[BX+8] D.PUSH WORD PTR 20[BX+S1] 9.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据21H的物理地址是()。
A.20102H B.20101H C.200FEH D.200FFH 10.对于下列程序段:AGAIN:MOV AL,[SI]MOV ES:[DI],ALINC SIINC DILOOP AGAIN也可用指令()完成同样的功能。
微机原理及接口第四章习题答案
“微机系统原理与接口技术”第四章习题解答1.判断以下说法是否正确,如有错,请说明原因并改正。
(1)伪指令在汇编过程中不会产生二进制代码。
(2)宏和过程的相同之处是都可用于简化源程序书写、精简目标代码。
(3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。
(4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。
答:(1)正确。
(2)错误。
宏不能精简目标代码。
(3)错误。
高级语言程序经编译或解释后直接转换为目标代码。
(4)正确。
'2.已知数据和符号定义A1 DBA2 DB 8K1 EQU 100判断下列指令的正误,并说明错误指令的原因。
(1)MOV K1,AX(2)MOV A2,AH(3)MOV BX,K1MOV [BX],DX\(4)CMP A1,A2(5)K1 EQU 200答:(1)错误。
K1是符号常数,在此处相当于立即数100,故不能做目的操作数。
(2)正确。
(3)正确。
(4)错误。
A1、A2都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直接进行比较。
(5)错误。
用EQU定义的符号不能重新赋值,除非已用PURGE解除了原值。
3.若数据段中有定义N UM1 EQU 23H…N UM2 DW 0则指令MOV NUM2,NUM1 的源、目操作数的寻址方式以及指令执行后NUM2+1单元的内容分别是什么答:指令MOV NUM2,NUM1的源操作数使用立即数寻址,目的操作数使用直接寻址。
指令执行后NUM2+1单元的内容是0。
4.设DS=6000H,BX=8432H,SS=5000H,SP=3258H,内存69632H~69635H单元的内容依次是00H、11H、22H、33H。
4字节指令CALL DWORD PTR [BX+1200H] 本身位于2000H:3250H处的双字单元中。
当8086执行该指令后转移至子程序入口时,CS、IP、SS、SP各寄存器以及栈顶2个字单元的内容分别是多少答:执行结果为CS=3322H,IP=1100H,SS=5000H,SP=3254H,栈顶的两个字即断点地址,为2000H:3254H。
微机原理与接口技术(科学出版社)第4章课后习题及答案
微机原理与接口技术第四章课后习题1.指令主要有哪些分类方式? 其主要类别是什么?答:操作数、级别、功能。
操作数:无操作数、单操作数、双操作数三操作数;级别:机器指令和汇编指令功能:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;2.80X86的寻址方式有哪些?它们的具体含义是什么?答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式(1)立即寻址方式:操作对象是这个操作数本身(2)寄存器寻地址:操作对象是寄存器中的内容(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象3. 指出下列各指令中源操作数和目的操作数的寻址方式:⑴MOV BX,WORD PTR[2200H] ⑵ AAA⑶JUM 2200H ⑷ LES DI,[2100H]⑸ MOV [BX+SI+8], BX ⑹ ADD AX,[BP+3000H]答:⑴MOV BX, WORD PTR[2200H] 源操作数:直接寻址;目的操作数:寄存器寻址⑵AAA 源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址⑶JUM 2200H 程序转移段内直接寻址方式⑷LES DI,[2100H] 源操作数:直接寻址;目的操作数:寄存器寻址⑸MOV [BX+SI+8], BX 源操作数:寄存器寻址;目的操作数:相对基址变址寻址⑹ADD AX,[BP+3000H] 源操作数:直接寻址;目的操作数:寄存器相对寻址4. 设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500 H,则:(1)10202H(2)40300H(3)21010H(4)42156H(5)31510H5.写出清除AX寄存器内容的方法并比较。
微机原理第4章习题与答案
……
PRGM ENDS
(3)ALPHA EQU BETA
(4) COUNT EQU 100
COUNT EQU 65
(5) GOON DW 10DUP(?)
……
JMP GOON
答案:
(1)字节变量,范围在0~255
(2)定义段的伪指令为SEGMENT
(3)BETA必须先定义
(4)EQU不能重复定义,在下一次定义前必须用PURGE撤消
MOV BX, F1
答案:
(1)
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255;QA=255
QA1=QA GT 3000;255大于3000,命题假,QA1=0
QA2=0FFFH;QA2=0FFFH
QA3 EQU QA2 XOR 255;QA3=0FFFH⊕0FFH=0F00H
AND AX, 0FFH;AX=0045H
MOV BX, WORD PTR G1;BX=0FF20H
MOV BX, 255 AND 0FH;BX=000FH
ADD AX, OFFSET F2;AX=1245H
MOV BX, F1;BX=2211H
4.以下程序的执行结果是_______。
ADB‘1234’
BDW5 DUP(2,3 DUP(0))
CDW‘AB’,’C’,’D’
L1:MOVAL,TYPE B
MOVBL,LENGTHB
MOVAH,SIZE A
MOVBH,SIZE C
MOVCL,TYPEL1
MOVCH,SIZEB
答案:AX=0102H,BX=0205HCX=0AFFH
微机原理与接口技术第四章试题及答案
第四章4-1填空1.MCS-51的Po口作为输出端口时,每位能驱动8 个SL型TTL负载.2.MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"1"3.设计8031系统时,_P0、P2 口不能用作一般I\O口.4.MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器__SCON _加以选择.5.当使用慢速外设时,最佳的传输方式是中断.6.当定时器To工作在方式3 时,要占定时器T1的TR1和TF1_两个控制位.7.MCS-51有5 个中断源,有2 个中断优先级,优先级由软件填写特殊功能寄存器IP 加以选择..8.用串口扩并口时,串行接口工作方式应选为方式0 .9.在串行通信中,有数据传送方向单工、半双工、全双工三种方式.10.外部中断入口地址为_ 0013H4-2判断1.MCS-51的5个中断源优先级相同。
(×)2.要进行多机通信,MCS-51串行接口的工作方式应为方式1。
(×)3.MCS-51上电复位时,SBUF=00H。
(×)。
4.MCS-51有3个中断源,优先级由软件填写特殊功能寄存器IP加以选择.. (×)5.用串口扩并口时,串行接口工作方式应选为方式1. (×)6.外部中断INTO 入口地址为_0013H(×)7.MCS-51外部中断0的入口地址是0003H。
(√).8.TMOD中的GATE=1时,表示由两个信号控制定时器的启停。
(√)。
9.使用8751且=1时,仍可外扩64KB的程序存储器。
(×)10.PC存放的是当前执行的指令。
(×)11.MCS-51的特殊功能寄存器分布在60H~80H地址范围内。
(×)12.MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"0"(×)4-3选择1.在中断服务程序中,至少应有一条( D )(A)传送指令(B)转移指令(C)加法指法(D)中断返回指令2.要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器IE的内容应是( B )(A)98H (B)84H (C)42 (D)22H3.D MCS-51在响应中断时,下列哪种操作不会发生( D ).(A)保护现场(B)保护PC (C)找到中断入口若悬河(D)保护PC转入中断入口4.用MCS-51串行接口扩展并行I\O口时,串行接口工作方式应选择( C )(A)方式0 (B)方式1 (C)方式2 (D)方式35.MCS-51有中断源(A)(A)5个(B)2个(C)3个(D)6个6.MCS-51响应中断时,下面哪一个条件不是必须的()(A)当前指令执行完毕(B)中断是开放的确(C)没有同级或高级中断服务须(D)必须有RET1指令7.使用定时器T1时,有几种工作模式(D)(A)1种(B)2种(C)3种(D)4种8.计算机在使用中断方式与外界交换信息时,保护现场的工作方式应该是( B )(A)由CPU自动完成(B)在中断响应中完成功之路(C)应由中断服务程序完成(D)在主程序中完成9.下面哪一种传送方式适用于处理外部事件( C )(A)DMA (B)无条件传递进(C)中断(D)条件传递1、2、4章的编程1.8225A控制字地址为300FH,请按:A口方式0输入,B口方式1输出,C口高位输出,C口低位输入,确定8225A控制字并编初始化程序.解:控制字为10010101=95H初始化程序:MOV DPTR ,#300FHMOV A,#95HMOVX @DPTR ,A2.编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9、分析以下程序段
ADD AX,BX JNO L1 JNC L2 3)如果AX=D023H,BX=9FD0H, 则程序执行后,程序转向标号 SUB AX,BX ( L5 )执行。 JNC L3 JNO L4 JMP SHORT L5 (1)如果AX=147BH,BX=80DC,则程序执行后,程 L1 序转向标号 执行。
8、下列程序段运行后,A单元的内容为 250 。
DATA A B C DATA MOV MOV MOV MOV ADD MOV SEGMENT DW 0 DW 0 DW 230,20,54 ENDS … BX,OFFSET C AX,[BX] B,AX AX,2[BX] AX,B A,AX …
SEGMENT 5、编写下列程序 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA 数据段定义如下: MOV DS,AX DATA SEGMENT LEA BX,FIRST FIRST DB 90H,5FH,6EH,69H LEA SI,SECOND MOV CL,2 SECOND DB 4 DUP (?) MOV DX,4 DATA ENDS NEXT: MOV AL,[BX] 编写程序,将FIRST开始的 SHL AL,CL 四个字节十六进制数逻辑 MOV [SI],AL INC BX 左移两位(每个字节都左 INC SI 移),结果存放在 DEC DX SECOND开始的存储区中。 JNZ NEXT MOV AH,4CH INT 21H CODE ENDS END START
ቤተ መጻሕፍቲ ባይዱ
CODE
6、编写程序计算S=2+4+6+……+200。
CODE SEGMENT DATA SEGMENT ASSUME CS:CODE,DS:DATA S DW ? START: MOV AX,DATA DATA ENDS MOV DS,AX MOV AX,0 MOV CX,100 MOV BX,2 NEXT:ADD AX,BX MOV AH,4CH INC BX INT 21H INC BX CODE ENDS LOOP NEXT END START MOV S,AX
2)如果AX=42C8H,BX=608DH, 则程序执行后,程序转向标号 ( L2 )执行。
11、下列程序段是比较AX,BX,CX中带符 号数的大小,将最大数放在AX中。请将程序 填充完整。 CMP AX,BX JGE NEXT XCHG AX,BX NEXT: CMP AX,CX JGE OUT XCHG AX,CX OUT:……