微型计算机原理与接口技术第 02次作业 下载本文

内容发布更新时间 : 2024/5/21 1:11:37星期一 下面是文章的全部内容请认真阅读。

微型计算机原理与接口技术第 02次作业

1、写出下列用逻辑地址表示的存储单元的物理地址 (1) 1234H:5678H 179B8H

(2) 2F34H:2F6H =2F34H:02F6H 2F636H (3) 576AH:1024H 586C4H

(4) 2FD0H:100H =2FD0H:0100H 2FE00H

2、列表写出下列指令中目标操作数、源操作数的寻址方式,如果有非法的内存操作数请改正,并写出CPU所寻址的逻辑段。 (1) MOV BX,50 (2) CMP [BX],100 (3) ADD [SI],1000 (4) MOV BP,SP

(5) MOV BX,[BP+4] (6) MOV AX,[BX+DI+5] 指令 MOV BX,50 CMP [BX],100 ADD [SI],1000 MOV BP,SP MOV BX,[BP+4] MOV AX,[BX+DI+5] 目标操作数的寻址方式 寄存器寻址 寄存器间接寻址 寄存器间接寻址 寄存器寻址 寄存器寻址 寄存器寻址 源操作数的寻址方式 立即寻址 立即寻址 立即寻址 寄存器寻址 寄存器相对寻址 基址加变址相对寻址 是否非法 否 否 否 是 否 否 CPU所寻址的逻辑段 DS DS DS SS DS 3、以216为模,将C678H 分别和下列各数相加,列表写出十六进制和的值,以及A、C、O、P、S、Z 等6 种状态标志的值。 (1) CF23H (2) 6398H (3) 94FBH (4) 65E2H 加数 加数 6398H 和 A C O P S Z C678H CF23H 1959BH 0 1 0 0 1 0 12A10H 1 1 0 0 1 0 94FBH 15B73H 1 1 0 0 1 0 65E2H 12C5AH 1 1 0 1 1 0

4、分别用一条指令完成:

(1) AH高4位置1,低4 位不变; OR AL,0F0H

(2) BH高4位取反,低4 位不变,BL 高4 位不变,低4 位取反; XOR BX,0F00FH

(3) CX低4位清0,其它位不变。 AND CX,0FFF0H

5、把AH低 4位和 AL 低4 位拼装成一个字节(AH的低4 位为拼装后字节的高4位),存入AH中。 SHL AH,4 AND AL , 0FH OR AH,AL

6、将AL 中的 8位二进制数,按倒序的方式重新排列。即若AL原来为 D7~D0(如5CH),则倒序后AL=原D0~D7(3AH)。 MOV CX,8 L:SHL AL, 1 RCR BL,1 LOOP L

MOV AL,BL

7、现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H, (20102H) =56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=65H,(21203H)=0B7H, 试说明下列各条指令单独执行完后,相关寄存器或存储单元的内容。 (1) MOV AX, [1200H] (AH)=4C2AH (2) ADD BX, [BX] (BX)=3512H

(3) SUB BH, BYTE PTR [BX+1100H] (BH)=0D7H

(4) XCHG BX, [BX+SI]

(BX)=7856H,(20102H)=0100H

(5) SAR WORD PTR [BX+SI+1100H],1 (21202H)=0DBB2H 8、已知下列程序段: ADD AL,BL JO L1 JC L2

CMP AH,BH JG L3 JB L4 JMP L5

若给定AX 和BX的值如下,说明程序的转向。 (1) (AX) = 14C8H,(BX) = 808DH L1 (2) (AX) = 3F23H,(BX) = 50D0H L4

9、设数据段有:

BUF DB 50 DUP(?) ;50 个有符号数 分别编写下述程序段:

(1) 将其中正数送数据段PLUS 开始的若干单元,负数送数据段MINUS开始的若干单元; (2) 将其中的非零数送数据段NOT0开始的若干单元; (3) 分别求出他们的绝对值 .486

CODE SEGMENT USE16 ASSUME CS:CODE ORG 100H

START: JMP BEG

BUF DB 9,-2,-1,0,-4,2,55,-3,5,3,4,-5,36,0,-64,20,10,-10,-30,14

DB 50,-122,113,-120,42,0,-91,77,0,101,109,-56,33,0,70,72,98,99,12,45 DB 56,33,-75,70,72,-98,99,12,-45,86 PLUS DB 50 DUP(?) MINUS DB 50 DUP(?) NOT0 DB 50 DUP(?) ABST DB 50 DUP(?)

BEG: MOV CX,50 准备第一次循环 LEA SI,BUF SI指向数据缓冲区 LEA DI,PLUS ; DI指向正数保存缓冲区 CLD ; 递增串指针 REDOP: LODSB 处理正数(每次取一个数) CMP AL,0 JNG NEXTP 负数和0不处理 STOSB 保存正数 NEXTP: LOOP REDOP MOV CX,50 LEA SI,BUF LEA DI,MINUS CLD

REDOM: LODSB CMP AL,0 JGE NEXTM STOSB

NEXTM: LOOP REDOM MOV CX,50 LEA SI,BUF LEA DI,NOT0 CLD

REDON: LODSB CMP AL,0 JNZ NEXTN STOSB

NEXTN: LOOP REDON MOV CX,50 LEA SI,BUF LEA DI,ABST