④、现有三个字节存储单元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