8086汇编语言习题解答 下载本文

.

4.13、下述语句汇编后,$+20H和$+40H中的$值分别是多少

NUM= DA1 DA2

DB

10H,$+20H,30H,$+490H

ORG

34H

DA1 + NUM + 40H

4.14、试用数据定义语句DW改写下述语句,使它们在存储器中有完全相同的存储情况。

DA1 DA2

DB ‘ABCDEFGHI’

DB 12H, 34H, 56H,7 8H, 9AH, 0BCH

4.15、现有两个程序摸块:

TITLE

PROC

TITLE PROC2

SEGMEND

10H DUP(0)

DATA1 DA1

SEGMENT DATA2 DA2

DB 10H DUP(0)

DW

DATA1 ENDS CODE1

DATA2 ENDS

SEGMENT

CODE2

SEGMENT

ASSUME CS: CODE1 ASSUME DS: DATA1

ASSUME CS: CODE2 ASSUME DS: DATA2

PROC FAR

START: SUB2

MOV DX, DA2+2 CALL SUB2

MOV AL, DA1+2 RET

.

.

SUB2 ENDP

CODE1

ENDS END

CODE2 ENDS

END SUB2

ATART

在上述两个程序模块汇编、连接后,准备从START处开始执行。但在汇

编连接期间出现语法错误,为使上述两程序模块能正确汇编、连接并执行,试 修改和补充有关语句。

4.16、指出下列程序中哪几条语句有语法错误,并指出是什么错误(如符号有没有定义) 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

指令语句

DATA SEGMENT

VAR1 DB 0, 3, 5H, 0B7H VAR2 DB 12H, A4H, 5BH VAR3 DB “ABCDEFGHIJ”

VAR4 DW 1234H,”XY”, 0ACDH, 87H VAR5 DB DUP (?) DATA ENDS STACK1

SEGMEND PARA STACK

DW 10H DUP (0) STACK1 COSEG

ENDS SEGMENT

ASSUME CS: COSEG, DS: DATA,SS: STACK1 MOV MOV LEA

BX, DATA DS, BX SI, VAR5

START

.

.

16 17 18 19 20 21 22 23 24 25

MOV MOV MOV SHL ADD MOV MOV INT ENDS END

BX, OFFSET VAR3 AX,VAR1+2 [SI],0ABH AX, 3 VAR1, VAR2+2 [BX], [SI] AH, 4CH 21H

CODE

START

4.17、试用段定义伪指令编制一个小练习程序。待程序调试通过后,试对下列情况作一试验,观察它们在汇编、连接、调试时有何变化? ⑴、在组合类型中没有指定”STACK’的段;

⑵、有2~3个数据段组合类型中分别设置PUBLIC和COMMON; ⑶、在定位类型中有的段设置为WORD或BYTE。

.