1、1.(1)MOV SI,100 正确。源:立即数寻址, 目的:寄存器寻址(2)MOV BX,VAR1SI 正确。源:寄存器相对寻址,目的:寄存器寻址(3)MOV AX,BX正确。源:寄存器间接寻址,目的:寄存器寻址(4)MOV AL,DX错误。寄存器间接寻址时,DX, AX, CX不能作地址寄存器(5)MOV BP,AL 错误。操作数类型不一致(6)MOV VAR1,VAR2 错误。两存储单元之间不能用MOV指令传送数据(7)MOV CS,AX 错误。CS不能为目的操作数(8)MOV DS,0100H 错误。目的操作数为段寄存器时,源操作数不能为立即数(9)MOV BXSI,1 错误。指令类型
2、不定。(10)MOV AX,VAR1+VAR2 错误。MOV指令中不能完成加法运算(11)ADD AX,LENGTH VAR1 正确。源:立即数寻址。目的:寄存器寻址(12)OR BL,TYPE VAR2 正确。源:立即数寻址。目的:寄存器寻址(13)SUB DI,78H 错误。指令类型不定(14)MOVS VAR1,VAR2正确。目的、源均为隐含寻址。操作数仅指出操作数类型(15)PUSH 100H错误。将常数压入堆栈,要通过寄存器来实现(16)POP CS 错误。目的操作数不能为CS(17)XCHG AX,ES 错误。XCHG指令的操作数不能是段寄存器(18)MOV DS,CS错误。MOV
3、指令不能从段寄存器到段寄存器(19)JMP L1+5正确。段内直接转移(20)DIV AX,10错误。指令格式错误。(21)SHL BL,2错误。移位指令的移位数为1或者CL(22)MOV AL,15+23正确。源:立即数寻址,目的:寄存器。编译时就处理为38(23)MUL CX正确。源:寄存器寻址,目的:寄存器寻址(24)XCHG CL,SI 正确。源:寄存器间接寻址,目的:寄存器寻址(25)ADC CS:0100,AH 正确。源:寄存器寻址,目的: 直接寻址(数据在代码段中)(26)SBB VAR1-5,154正确。源:立即数寻址,目的:直接寻址。1.RESET为系统复位信号,高电平有效,
4、其有效信号至少要保持四个时钟周期,且复位信号上升沿要与CLK下降沿同步。系统复位后的启动地址为0FFFF0H。即:(CS)=0FFFFH,(IP)=0000H。2.在8086的基 周期中,在 出有效的ALE信号 在(T2) 出 电平的 (RD)信号,相 的 DEN为_ _电平, 为_ _电平 AD15 - AD0上在( T4) 期间 出地址信 ,在 完成数据的 入。3.在 成8086 系统 时,地址 存器74LS373的 通信号G 接CPU的 ( ALE) 信号, 出 接 (地) 数据 器74LS245的 DIR 接(DI/R)信号, 出 ( E) 接( DEN)信号。4.CPU在 T3 RE
5、ADY信号,(_高_)电平时有效, 存储器或I/O 就,下一个时钟周期currency1数据的 “,CPU动入一个或fi个 (fl 周期(TW )) , 周期,从保 的CPU与的存储器或I/O 之间”地currency1数据传送。5. 8086 系统的系统 系统的系统 一个 (8288 器)。6.8086 式下, 周期 周期相同之处是:在 (T1) ALE信号为有效 (高) 电平, 出 (M/IO) 信号来确定是存储器是I/O ,同时送出20位有效地址,在 (T1) 的后,ALE信号为 ( ) 电平, 用其下降沿将20位地址 (BHE) 的 存在地址 存器中 相之处从 (T2) 的数据传送段。
6、6. 存储器的要指 有 :存储器的要指 有:存储 、 、 、 fl。7.一 8位 系统的地址 为16位,其存储器中RAM的 为32kB,地址为4000H,且地址是 接的。用的 高地址是 少 :32K= =8000H, 高地址为:4000H+8000H-1=BFFFH,用的 高地址为0BFFFH. 8. 系统中内存的地址为4000H, 地址为7FFFH, 其内存 。:7FFFH-4000H+1=4000H= =16KB内存 为16KB。9.7.在8086系统 中,为 要有地址 存器 :8086CPU有20地址 16数据 ,为 少 , 用 时复用, 20 。20在 周期的T1 出地址。为地址信 在
7、 周期的其 T 保持有效, 有一个地址 存器,T1 出的20位地址信 currency1 存。14.在 成的 BUFFER中,前2个节存放个数,后续每个节存放一个的ASCII码。编程序实现将 2004替换成2006。:在数据段中定义:BUFFER DW 74DB This year is 2004. In 2004, we have a plan for reducing annual expensive10%DEST DB 2004在代码段中编程序段:CLDLEASI, BUFFERMOVCX,SIADDSI,2LEADI,DESTL1:PUSH SIPUSH DIPUSH CX MOV C
8、X,4REPZ SCASBJNZL2MOV BYTE PTR SI-1,6L2:POP CXPOPDIPOPSIINCSIINCDILOOP L11.已知在BUF的起 处保存有N个的ASCII码,编汇编语言程序实现,将组 传送到 BUFR中,且 的顺序与原来的顺序相反。:BUF DB “BONJOUR_BELLE“BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,SIMOV DI,ALINC SIDEC DILOOP L17. 析下列程序段的功能:MOV CL,04SHL DX,CLMOV BL
9、,AHSHL AX,CLSHR BL,CLOR DL,BL:程序段完成DX:AX组成的32位无号数左移4位, 位补零(也即除16)。13.设BUF中存放有N个无号数(或有号数),编程实现 它们的 值(存入AX) 值(存入DX)。:BUF存放有N个无号数的程序如下:MOV CX,NLEA SI,BUFMOV AX,SIMOV DX,AXADD SI,2L1:CMP AX,SIJBE NOCHG1XCHG AX,SINOCHG1:CMP DX,SIJAE NOCHG2XCHG DX,SINOCHG2:ADD SI,2LOOP L1如果BUF中存放的是有号数,只需要将程序中的两currency1内
10、修改:JBE NOCHG1 改成:JLE NOCHG1JAE NOCHG2 改成:JGE NOCHG214.设BUFFER中存放有N个无号(第1个节存放 的 ),编程实现将其中的0元素抹去,更新其 。:设BUFFER中存放的是节型数据。 用双指针 法:SI为 指针,DI为指针,从 地址 ,内存中 出一个节,如果不为0,入内存 如果为0,不currency1操作。LEA SI, BUFFERXOR CX,CXMOV CL, SIINC SIMOV DI, SIXOR BH,BHXOR AL,ALL1:CMP SI,ALJZ L2MOV BL,SIMOV DI,BLINC DIINC BHL2:I
11、NC SILOOP L1MOV BUFFER,BH16.编一个子程序实现统计AL中1的个数,然后 测出节型 BUF中01个数相fl的元素个数。:统计AL中1的个数,只需将AL右移,移出的一位内 currency1累加,子程序为:COUNTBYTE PROC NEARPUSH AXPUSH CXMOV CX,8XOR BL,BLCOU1:SHR AL,1ADC BL,0LOOP COU1POP CXPOP AXRETCOUNTBYTE ENDP在此基础上, 测出节型 BUF中01个数相fl的元素个数,即一个节中有4个1。设BUF中有N个节型数据,果保持在BH中。MOV CX,NLEA SI, B
12、UFXOR BH,BHL1: MOV AL,SICALL COUNTBYTECMP BL,4JNZ L2INC BHL2: INC SILOOP L125. 编程序实现 级数 的前n项刚于2000的项数n。:BL用于存放项数。STACK SEGMENT STACK STACKDW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTDB 100H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AX
13、MOV AX,STACKMOV SS,AXLEA SP,TOP MOV BL,1MOV CX,0 COUNT:MOV AL, BLMUL BL ADD CX,AX CMP CX,2000JA EXIT INC BLJMP COUNTEXIT:31. 设在数据段中定义:STRING DB Today is Sunday 计数器0 式MOV AL,00010110BOUT DX,ALMOV DX,284H 计数器0时常数MOV AL,20OUR DX,ALMOV DX,287;计数器2 式MOV AL,10010110BOUT DX,ALMOV DX,286H 计数器2时常数MOV AL,200O
14、UT DX,ALMOV DX,287HMOV AL,01010010B 计数器1 式OUT DX,ALMOV DX,285HMOV AL,9 计数器1时常数OUT DX,AL6. 织布 系统如图9.26示,已知织布 每织1米 出一个正脉 ,每织100米要 接 到一脉 ,去触 剪裁设布剪 。(1)设8253的 地址为80H83H,编对8253初 化程序。(2)假定系统提供的信号频率为1MHz,希望 用8253的其余通道产生0.1秒的周期信号,编初 化程序。:(1)MOVDX,83HMOVAL,00010100BOUTDX,ALMOVDX,80HMOVAL,100OUTDX,AL(2)将计数器1的
15、 出OUT1信号作为计数器2的时钟 入CLK2,计数器1的时钟 入为系统提供1MHZ的信号MOVDX,83HMOVAL,01110100BOUTDX,ALMOVDX,81HMOVAX,1000OUTDX,ALXCHG AL,AHMOVDX,ALMOVDX,83HMOVAL,10010110BOUTDX,ALMOVDX,82HMOVAL,100OUTDX,AL3. 如果8255A的 地址为300H303H,A组B组均为 式0, A为 出, B为 入,PC3PC0为 入,PC7PC4为 出,出8255A的初 化程序段 编程实现将从 C 4位 入的值从高4位送出。:MOV DX,303HMOV AL
16、,10000011BOUT DX,ALMOV DX,302HIN AL,DXMOV CL,4SHL AL,CLOUT DX,AL4.在实际 用中经常需要 测设的 ,currency1指示。在8086 式系统下,有一 8255A,其 配的 地址为8F00H8F07H中的奇地址,外设产生的 有16个(K15K0),要 用4个 光二极管来指示 关 中“1”的个数。(1)画出8255A的 接图 (2)编程序段实现 续 测显示。:MOV DX,8F07HMOV AL,10010010B ; A、B 式0 入, C 式0 出OUT DX,ALNEXT:MOV DX,8F03H ;从 B 取高8位 关 IN
17、 AL,DXXCHG AL,AHMOV DX,8F01H ;从 A 取 8位 关 IN AL,DXMOV BX,AXXOR AL,ALMOV CX,16CLCL2:SHL BX,1JNC L1INC ALL1:LOOP L2MOV DX,8F05H ;从 C送出OUT DX,ALJMP NEXT ;currency1下一次 测5. 在实际 用中,经常会遇到要 入 个数据 ,时需要用到 路 关,如图10.21表示八 一的 框图及其真值表。现有8组16位 关 数据(无号数),要 通过一 8255A( 地址为260H263H) 时 入到CPU(8088 式系统)中,找出它们中的 值,通过4个 光二极
18、管指示其序号(灯亮表示“1”)。画出8255A的 接图,编程实现。:于 关 是16为数据, 将8255A的PA 与PB 设定为 式0, 取 关 的 八位高八位,PC 三位 的 八 一电路的 出 次从X0到X7,用PC 的高八位 出 关 的序号( 序号为18), 光二极管的亮 码指示序号。接图如下:程序段如下:MOV DX,263HMOV AL,10011010B ;设定 作 式,PA,PB均 作于 式0,PA、PB为 入,PC为 出OUT DX,ALMOV CX,8XOR BX,BXMOV SI,0 ;SI表示 入 关 的序号ST1:MOV DX,262H OUT DX,SIMOV DX,260H ;将 关 数据的 八位入ALIN AL,DXMOV DX,261H ;将 关 数据的高八位入AHIN AH,DX CMP BX,AX JA NEXTMOV BX,AX ;将 前 值保存在BX中INC SIPUSH SI ;将 前 值的序号压栈NEXT:INC SILOOP ST1POP SI ; 值的序号出栈XOR AX,AXMOV AX,SI MOV CL,4ROL AL,CL ;将 值的序号(4位)移至AL的高四位MOV DX,262HOUT DX,AL ;PC的高四位 出 值序号