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

4.12、下述程序段执行后,寄存器AX和BX的内容分别是多少?

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

ORG

34H

MOV MOV

AX, ALPH LE NUM BX, ALPH GT NUM

NUM

EQU

945H

ALPH=35*27

NUM= DA1 DA2

DB

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

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

DW

10H

DATA1 DA1

SEGMENT DATA2

DA2

DB 10H DUP(0)

DUP(0)

DATA2 ENDS

DATA1 ENDS

CODE1

MOV DX, DA2+2 CALL SUB2

MOV AL, DA1+2

SEGMENT

CODE2

SEGMENT

ASSUME CS: CODE2

ASSUME DS: DATA2

ASSUME CS: CODE1 ASSUME DS: DATA1

START: SUB2 PROC FAR

RET

SUB2 ENDP

CODE1

ENDS END

CODE2 ENDS

END

SUB2

ATART

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

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

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

指令语句

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

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

STACK1 DW

SEGMEND PARA STACK

10H DUP (0)

ENDS

STACK1 COSEG

SEGMENT

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

BX, DATA DS, BX SI, VAR5 BX, OFFSET AX,VAR1+2 [SI],0ABH AX, 3

VAR1, VAR2+2 [BX], [SI] AH, 4CH

VAR3

START

MOV MOV MOV SHL

ADD MOV MOV INT ENDS END

21H

CODE

START

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

⑵、有2~3个数据段组合类型中分别设置PUBLIC和COMMON;

⑶、在定位类型中有的段设置为WORD或BYTE。