微机原理与接口技术习题答案 - 副本 下载本文

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

第3章 8086/8088指令系统与寻址方式习题

3. 3 8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H, BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。

(1)MOV BX,12 ;目标操作数为寄存器寻址

(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H (3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H (4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H (5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H

(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H (8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H (9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H

3.4 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。 (1)XCHG CS,AX ;错,CS不能参与交换 (2)MOV [BX],[1000] ;错,存储器之不能交换 (3)XCHG BX,IP ;错,IP不能参与交换 (4)PUSH CS

(5)POP CS ;错,不能将数据弹到CS中 (6)IN BX,DX ;输入/输出只能通过AL/AX

(7)MOV BYTE[BX],1000 ;1000大于255,不能装入字节单元 (8)MOV CS,[1000] ;CS不能作为目标寄存器 (9)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址

3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行 PUSH BX 指令后,栈顶地址和栈顶2个字节的内容分别是什么?

当前栈顶的地址=2FF00H

当执行PUSH BX 指令后,栈顶地址=2FEFEH (2FEFEH)=57H (2FEFFH)=34H

3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。 (1) SHR DX,1 ;DX=3C62H CF=1 (2) SAR DX,CL ;DX=03C6H CF=0 (3) SHL DX,CL ;DX=18A0H CF=1 (4) ROR DX,CL ;DX=2BC6H CF=0 (5) RCL DX,CL ;DX=18B7H CF=1 (6) RCR DH,1 ;DX=BCC5H CF=0;

3.9 设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。

AX CF ZF OF SF PF (1)XOR AX,VALUE ; 134EH 0 0 0 0 1 (2)AND AX,VALUE ; 0821H 0 0 0 0 1 (3)SUB AX,VALUE ; F142H 1 0 0 1 1 (4)CMP AX,VALUE ; 0A69H 1 0 0 1 1

(5)NOT AX ; F596H X X X X X (6)TEST AX,VALUE ; 0A69H 0 0 0 0 1

3.10 设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和

条件转移指令。

(1) CX值超过DX转移。 (2) AX未超过BX转移。 (3) DX为0转移。

(4) CX值等于小于DX转移。

(1) CMP CX,DX

JA NEXT

(2) CMP AX,BX JLE NEXT (3) CMP DX,0 JZ NEXT (4) CMP CX,DX JBE NEXT

3.11 阅11 阅读分析下列指令序列:

ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5

若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转

向何处(L1~L5中的一个)。 (1) AX=13C6H, BX=80DCH (2) AX=0B568H,BX=54B7H (3) AX=42C8H, BX=608DH (4) AX=0D023H,BX=9FD0H (5) AX=9FD0H, BX=0D023H (1) 转L1 (2) 转L1 (3) 转L2 (4) 转L5 (5) 转L5 第四章 汇编语言程序设计习题

4.5 画出下列语句中的数据在存储器中的存储情况。

VARB DB 34,34H,‘GOOD’,2 DUP(1,2 DUP(0)) VARW DW 5678H,‘CD’ VARC EQU 12 22H 34H ‘G’ ‘O’ ‘O’ ‘D’ 1 0 0 1 0 0 78H 56H ‘D’ ‘C’ VARW

VARB

4.6 按下列要求,写出各数据定义语句。

(1) DB1为10H个重复的字节数据序列:1,2,5个3,4。 (2) DB2为字符串‘STUDENTS’

(3) DB3为十六进制数序列:12H,ABCDH

(4) 用等值语句给符号COUNT赋以DB1数据区所占字节数,该语句写在最后。

DB1 DB 16 DUP(1,2,5 DUP(3,4))

DB2 DB ‘STUDENTS’ DB3 DW 12H,0ABCDH COUNT EQU DB2-DB1

4.10 若自STRING单元开始存放有一个字符串(以字符‘$’结束);

(1) 编程统计该字符串长度(不包含 $ 字符,并假设长度为两字节)。 (2) 把字符串长度放在STRING 单元,把整个字符串往下移两个单元。

程序段为:

(1) MOV SI,OFFSET STRING XOR BX,BX

CONT:MOV AL,[SI] CMP AL,‘$’ JZ NEXT INC BX INC SI JMP CONT NEXT: MOV AH,4CH INT 21H

(2) STRING DB ‘????. $’