汇编语言课外作业一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 __