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

④、现有三个字节存储单元A、B、C。在不使用ADD和ADC指令的情况下,实现(A) + (B)送C。

⑤、用一条指令把CX中的整数转变成奇数(若原来是奇数,则CX看数据不变;若原来是偶数,则(CX )+1形成奇数。

⑥、根据AX中有0的位对BX中对应位变反,其余各位保持不变 3.15、试给出下列各指令的机器目标代码: ①、MOV ②、MOV ③、SAL ④、ADD

BL,12H[SI] 12H[SI],BL DX,1

0ABH[BP][DI],1234H

第四章

4.1、已知下列程序段 DATA SEGMENT

DB1 DB 12H,34H,0,56H DW1 DW 78H,90H,0AB46H,1234H ADR1 DW DB1 ADR2 DW DW1

BUF DB 5 DUP(0) DATA ENDS COSEG SEGMENT

ASSUME CS:COSEG,DS:DATA STACK1 SEGMENT PARA STACK DW 20H DUP(0)

STACK1 ENDS

ORG 30H START:

XOR CX,CX MOV CL,3 ADD ADR1,CX SUB ADR2,CX MOV BX,ADR2 MOV DI,ADR2 MOV AL,DB1[BX] MOV BUF[DI],AL MOV AX,DW1[BX][SI] MOV WORD PTR BUF,AX

COSEG ENDS

END START

上述程序段运行结束后,BUF中各字节单元的内容是什么? 答:AX:AC27,BX:0704,CX:0003,DX:0000 SI:0000,DI:0704,BP:0000,SP:0040 DS:139B,ES:139B,SS:13B3,CS:13AB IP:0053

DS:0030:CC 11 14 00 18 9B 13

4.2、某数据段中有

COUNT1 EQU 16H COUNT2 DW 16H

下面两条指令有何异同: MOV AX, COUNT1 MOV BX, COUNT2 答:AX:0016H, BX=1084H COUNT1 EQU 16H

是赋值语句

MOV BX, COUNT2是定义的地址指针,在1084H中才放字16H.

4.3、下面各题中有语法错误,试分别用两种办法修改题中语句,使它们在汇编时都能分别获得通过: ⑴、 M1 DW 5060H

MOV BL,M1

⑵、M2 EQU 10H

MOV M2,AL

⑶、M3 DW ‘ABCD’

⑷、M4 DB 1234

⑸、DATA1 SEGMENT

DA1 DW

1234H ENDS

DATA1

DATA2 DA2 DW

SEGMENT 5678H

DATA2 ENDS

CODE SEGMENT

CODE ENDS

MOV BX,DA2

ASSUME CS:CODE,DS:DATA1

4.4、设已定义数据段:

DA1 DA2

DB DB

XX, XX XX, XX DA1, DA2

DATA

SEGMENT

ADRR DW DATA ENDS

为使ADRR+2字存储单元中存内容为0022H,上述方框中应填写什么语句?

4.5、下面的程序段中,有数据为3000H的字存储单元有几个?它们的偏移量分别是多小?

ORG

30H

0, ?0?, 30H, 0, 30H DA1

DA1 DB

DW

4.6、下面的语句中有数据0102H的字存储单元有多少?

DB 10H DUP(1,2 DUP(2))

4.7、下述指令执行后,寄存器DS和SI的内容分别是多少?

LDS

SI,ADDR+1

ADDR

DW

1234H, 5678H, 0ABCDH

4.8、设某数据段为:

DATA

SEGMENT ORG

20H

NUM1=8 MUM2=NUM1+10H DB DB EQU DW ENDS

?IBM PC? 0AH,0DH

$=DA1

?IB?,?M?,?PC?,0A0DH

DA1

CUNT DA2

DATA

上述数据段定义后,DA1和DA2的偏移量,CUNT的值以及DA2+5字节单元的

内容分别是多少?

4.9、某源程序有如下数据段:

DATA1 DA1

SEGMENT DB ENDS SEGMENT DB

PAGE PUBLIC

DUP(0) WORD PUBLIC

DUP(0)

20H

DATA1 DATA2 DA2

20H