汇编语言课外作业一llm
- 格式:doc
- 大小:201.50 KB
- 文档页数:7
夜大专升本《汇编语言程序设计》
课外作业一
院 系
:远程与继续教育学院
专 业 : 计算机科学与技术
班 级 : 2012
学 号 : C201242087
姓 名 : 李雷明
任课教师 : 班鹏新
2012 年 10 月 4 日
汇编语言程序设计课外作业
- 1 - 一. 简答题
1. 设(DS)=2000H, (SS)=5000H, (ES)=7000H, (CX)=600H, (BP)=1000H, (SI)=10H, (DI)=50H, (BX)=99H计算下列各条指令的目的操作数的物理地址,并指出其寻址方式。
(1) SUB 6[SI], AX
解:目的操作数物理地址:16H
源操作数寻址方式:寄存器寻址
目的操作数寻址方式:变址寻址
(2) ADD [BP+SI+10], DX
解:目的操作数物理地址:1020H
源操作数寻址方式:寄存器寻址
目的操作数寻址方式:基址加变址寻址
(3) MOV ES:[DI], BP
解:目的操作数物理地址:70050H
源操作数寻址方式:寄存器寻址
目的操作数寻址方式:直接寻址
(4) MOV [BX], SI
解:目的操作数物理地址:99H
源操作数寻址方式:寄存器寻址
目的操作数寻址方式:寄存器间接寻址
(5) MOV DS:[200H], BX
解:目的操作数物理地址:200H
源操作数寻址方式:立即寻址
目的操作数寻址方式:变址寻址
2. 下列指令序列执行前, (SS)=2000H,(SP)=2000H,(BP)=2000H,(22000H)=800H, (ES)=900H, (DI)=
05B5H。
PUSH BP
POP DX
PUSH ES
PUSH DI
LEA BX, [BP+2]
则执行后:
(DX)= _ 2000H_ , (BX)= _ 22002H ,
(SP)=____ __1FFCH______。
二、判断对错, 错误的请说明原因,不必改正
(1) OR [BX+DI], WORD PTR [SI] 汇编语言程序设计课外作业
- 2 - 解:错误。WORD PTR [SI]值的长度为8位,而[BX+DI]值的长度为16位,无法进行运算。
(2) MUL BYTE PTR 10
解:正确。
(3) PUSH AL
解:错误。压入堆栈的必须为一个16位操作数。
(4) CMP [BX], ‘0’
解:正确。
*(5) OUT 255H, AX
解:错误。
(6) MOV [BX+BP], AX
解:正确。
(7) MOV DS, CX
解:错误。寄存器与寄存器之间不能用MOV指令。
*(8) JAE P
┆ 位移量=200个字节
P: „„„„
┆
解:错误。向前转时位移量不能超过127个字节。
(9) SAR BX, 3
解:正确。
(10) 在语句“MOV AL,[SI]”中,源操作数的寻址方式称为寄存器寻址方式。
解:错误。源操作数的寻址方式应该为寄存器间接寻址方式。
三、数据段定义如下,按要求回答问题。
DATA SEGMENT
B DW BUF
A DW 0AA73H
CC DD D
COUNT EQU $-B
D DB 35H,24H,-7,COUNT-6 DUP(1,2 DUP(37H))
BUF DB ‘123’
DATA ENDS B 汇编语言程序设计课外作业
- 3 - (1) 以字节为单位,并按照16进制的形式,
画出它们在存储单元中的存放形式。
B
DATA
A
CC
D
BUF
2)变量D相对于数据段DATA首址的
偏移地址是____0008H_____。
(3) 执行下列程序段后,屏幕上会有什么反应?
MOV AX, DATA
MOV DS, AX
LEA BX, BUF-1
MOV DL, [BX]
MOV AH, 2
INT 21H
(注:
MOV AH, 2
INT 21H
功能是显示DL中ASCII码对应字符)
答:屏幕上会显示“16”。
四、编写程序段 0011H
0AA73H
0008H
DATA
35H
24H
-7H
01H
37H
37H
01H
37H
37H
31H
32H
33H 汇编语言程序设计课外作业
- 4 - 1. 已知数据段中有语句“A DW -250,0”,请写出实现(A)*10/4-100 → A+2的程序段(注:不考虑溢出)
解:
DATA SEGMENT
A DW -250, 0
MUL1 DW 10
DIV1 DW 4
DATA ENDS
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA, SS:STACK, CS:CODE
START: MOV AX, DATA
MOV DS, AX
MOV AX, A
IMUL MUL1
IDIV DIV1
CWD
MOV CX, AX
MOV BX, DX
MOV AX, 100
CWD
SUB AX, CX
SBB DX, BX
MOV A+2, AX
MOV AH, 4CH
INT 21H
CODE ENDS
END START 汇编语言程序设计课外作业
- 5 -
2.在数据段中,有一长度为10的字符串存放在以BUF为首址的缓冲区中,请分别用下面指定的寻址方式将BUF+2和BUF+5两个字节的内容交换。
(1) 直接寻址方式(存取BUF+2和BUF+5两个字节的内容时)
解:
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
BUF DB ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START: MOV AX, DATA
MOV DS, AX
MOV AL, DS:[0002H]
XCHG AL, DS:[0005H]
XCHG AL, DS:[0002H]
MOV AH, 4CH
INT 21H
CODE ENDS
END START
(2) 变址寻址方式(存取BUF+2和BUF+5两个字节的内容时)
解:
DATA SEGMENT
BUF DB ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK 汇编语言程序设计课外作业
- 6 - START: MOV AX, DATA
MOV DS, AX
MOV BX, 0
MOV AL, 2[BX]
XCHG AL, 5[BX]
XCHG AL, 2[BX]
MOV AH,4CH
INT 21H
CODE ENDS
END START
(思考:寄存器间接寻址,基址加变址又如何,掌握四种)
五、程序阅读分析
1. 阅读下列程序段,请给出每条指令执行完毕后BX的值,以及全部指令执行完毕后CF的值。(5分)
DATA SEGMENT
BUF DW 23, -5,-7,8192H, 78H
NUM DW 5
M DW 0, -9
DATA ENDS
┋
MOV BX, NUM-5 ; (BX) = _ 128__
LEA DI, M ; (BX) = _ 128__
ADD BX 2[DI] ; (BX) = _ 142__
SAR BX, 1 ; (BX) = _ 71 __, (CF) = _ 0 __