第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
VARB
VARW
4.6  按下列要求,写出各数据定义语句。
(1)DB1为10H 个重复的字节数据序列:1,2,5个3,4。
(2)DB2为字符串‘STUDENTS’
(3)DB3为十六进制数序列:12H ,ABCDH
(4)用等值语句给符号COUNT 赋以DB1数据区所占字节数,该语句写在最后。
DB1DB  16 DUP (1,2,5 DUP (3,4))
DB2DB ‘STUDENTS’
DB3DW    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  ‘………….        $’0
1
78H
56H
‘D’
‘C’
COUNT  EQU  $-STRING
MOV    SI,OFFSET STRING
MOV    CX,COUNT
ADD    SI,CX
CONT:  DEC    SI
MOV  AL,[SI]
MOV  [SI+2],AL]
LOOP  CONT
MOV  CX,COUNT
MOV STRING,CX
MOV  AH,4CH
INT21H
4.11  将字符串STRING中的‘&’ 字符用空格代替,字符串STRING“The data is  FEB&03”。
程序为:
DATA SEGMENT
STRING DB  ‘The  data  is  FEB&03’
COUNT EQU  $-STRING
DATA ENDS
CODE SEGMENT
ASSUME  CS:CODE,DS:DATA
START:MOV  AX,DATA
MOV  DS,AX
MOV  SI,OFFSET  STRING
MOV  CX,COUNT
MOV  AL,‘$’
CONT:CMP  AL,[SI]
JNZ  NEXT
MOV  BYTE PTR[SI],‘ ’
NEXT:INC  SI
LOOP  CONT
MOV  AH,4CH
INT21H
CODE ENDS
END START
4.16 键盘输入十个学生的成绩,试编制一个程序统计69~69分,70~79分,80~89分,90~99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。
程序为:
DATA SEGMENT
BUF DB10 DUP(?)
S6DB?
S7DB?
S8DB?
S9DB?
S10DB?
DATA ENDS
CODE SEGMENT
ASSUME  CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV  SI,OFFSET S6
XOR  AL,AL
MOV CX,0504H
CONT:MOV[SI],AL
INC SI
LOOP CONT
MOV CX,10
MOV SI,OFFSET BUF
CONT1:MOV AH,1
INT21H
SHL AL,CL
MOV BL,AL
MOV AH,1
INT21H
SUB AL,30H
OR AL,BL
MOV[SI],AL
CMP AL,70H
JAE NEXT1
INC BYTE PTR  S6
NEXT1:CMP AL,80H
JAE NEXT2
INC BYTE PTR  S7
NEXT2:CMP AL,90H
JAE NEXT3
INC BYTE PTR  S8
NEXT3:CMP AL,99H
JA NEXT4
INC BYTE PTR  S9
JMP NEXT5
NEXT4;INC BYTE PTR  S10
NEXT5:INC SI
LOOP CONT1
MOV AH,4CH
INT21H
CODE ENDS
END START
第7章基本输入/输出接口习题
7.4  现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0为1时表明输入数据准备好。试采用查询方式,编程实现从该设备读取100个字节数据并保存到2000H:2000H开始的内存中。
程序段为:
MOV AX,2000H
MOV DS,AX
MOV  SI,2000H
MOV CX,100

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。