MOV DI,BX MOV SI,ADR2 MOV AL,D1[DB] MOV BUF[DI],AL MOV AX,DW1[BX][SI]
MOV WORD PTR BUF,AX · · ·
COSEG ENDS
运行程序后结果,BUF中的内容是_46H、ABH、0、56H、0__? 2、设已定义数据段:
DATA SEGMENT ____ORG 20H______? DA1 DB XX,XX DA2 DB XX,XX ADRR DW DA1,DA2 DATA ENDS
为了使ADRR+2字中存储单元中存放的内容为“0022H”,上述 方框中应填写什么语句?
3、下列程序段中数据“0102H”字的存储单元 有多少?
ADDR DB 10H DUP(1,2 DUP(2))
有0102H有_____15___________ 个。 4、下列指令执行后,写结果:
ADDR DW 1234H,5678H,0ABCDH · · ·
LDS SI,ADDR+1
程序执行后,(DS)=___7812H______? (SI)=__0CD56H_____? 5、设某数据段为:
DATA SEGMENT ORG 20H NUM1=8
NUM2=NUM1+10H
DA1 DB ‘IBM PC’ DB 0AH,0DH CUNT EQU $-DA1
DA2 DW ‘IB’,’M’,’PC’,0A0DH
21
DATA ENDS
上述数据段定义后,DA1偏移量=___20H_______?
DA2偏移量=____28H_______? CUNT=_______8___________?
6、程序有如下数据段:
DATA1 SEGMENT WORD PUBLIC DA1 DB 20H DUP(0) DATA1 ENDS
DATA2 SEGMENT PAGE PUBLIC DA2 DB 20H DUP(0) DATA2 ENDS
如果DA1的物理地址是134CEH, DA2 的偏移量=___40H________? 7、下述程序段执行后,寄存器的值填写在空白处:
ORG 0202H
DA_WORD DW 20H · ·
MOV AX,DA_WORD
MOV BX,OFFSET DA_WORD
问:(AX)=____0020H___________。 (BX) =_____0202H____________。
8、序段执行后,寄存器的内容填写在空白处;
NUM1=20*20
NUM2 EQU 400H
REL1 DW NUM1 LE NUM2 REL2 DW NUM1 NE NUM2 · · MOV BX,REL1
MOV CX,WORD PTR REL2
问:(BX)= __0FFFFH____? (CX)= 0 ?
9、下述程序段执行后,寄存器的内容写在空白处:
NUM EQU 945H ALPH= 35*27 · ·
MOV AX,ALPH LE NUM MOV BX, ALPH GT NUM
21
问:(AX)=____0FFFFH____? (BX)=_______0_______?
10.、下列程序执行以后,为了是DA2字单元中的值为50H,空白处应该填什么?
ORG 34H
NUM=_________0CH_________________? DA1 DW 10H,$+20H,30H,$+40H DA2 DW DA1+NUM+10H
11、有一短程序,试写出它的结果:
MOV AL, 43H OR AL, 20H
两条程序执行完后结果:(AL)= 63H 。 12、某程序,(DS)=0F800H,(DI)=180AH,(0F980A)=0064H
MOV CL,5 SAR [DI],CL
[DI]=______3____________?
13、数据区的存储单元有多少个字节?
ADDR DB 10H DUP(2,3 DUP(2))
答:_______40H_______________。 14、设某用户程序(SP)=50H,(AX)=5678H,(DS)=1111H,如现在有两条进栈指令:
PUSH AX PUSH DS 试问两条指令执行后,(SP)=_ 4CH____? 15、有符号定义语句如下: BUFF DB 1,2,3,’123’ EBUFF DB 0
L EQU EBUFF—BUFF 问 L= 6 ?
16、下面两个语句有何区别:X1 EQU 1000H 和 X2=1000H X1可重复定义,X2不可以 。 19、下列程序段执行后,BX寄存器的内容是多少? MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL BX= C02DH 。
20、下列程序段执行后,BX寄存器的内容是多少?
MOV CL ,7
MOV BX,8D16H
21
SHR BX,CL
BX= 011AH 。 21、若(AL)=96H,(BL)=12H,指令MUL BL 执行后,它的值为多少?CF为何值?
AX= 0A8CH ;(CF)= 1 。
22、下列程序执行以后,为了是DA2字单元中的值为62H,空白处应该填什么?
ORG 34H
NUM=______1EF___________________? DA1 DW 12H,$+20H,30H,$+40H DA2 DW DA1+NUM+10H
23、若(AL)=36H,(BL)=24H,指令IMUL BL 执行后,它的值为多少?CF为何值?
AX= 0798H ;(CF)= 1 。 24、已知(AX)=1546H,(CX)=AC21H,CF=1
SAR AX,CL XCHG CH,CL SHL AX,CL
上述三条指令执行后,(AX)=__3000H__,CF=__0___;
25、一个有16个字的数据区,它的起始地址为70A0:DDF6,请写出这个数据区首末字单元的物理地址。
首地址: 7E7F6H H 末地址: 7E802H H
习题五
1、程序有 顺序 、 循环 、 分支 和 子程序 四种结构形式。 2、循环程序可以有两种结构形式,一种是 DO-WHILE 结构形式,另一种是 DO-UNTIL 结构形式。
3、 循环程序由三部分组成:循环初始化部分 、 循环体 、循环控制部分 。 4、 分支程序结构的特点: 各分支之间是并行的,且执行方向是向前的 。
5、 一般情况下,在程序中可设置 数据段 、 代码段 、 堆栈段 、 附加段
四个当前段。
6、下列程序完成什么工作? DATX1 DB 300 DUP(?) DATX2 DB 100 DUP(?)
. .
MOV CX,100 MOV BX,200
21
MOV SI,0 MOV DI,0
NEXT:MOV AL,DATX1[BX][SI]
MOV DATX2[DI],AL INC SI INT DI
LOOP NEXT
答: 将DATX1的后100个字节的元素对应的赋给了DATX2 。
7、用查表的方法将以为十六进制转换成它相应的ASCII码,将程序填写完整。
DATA SEGMENT · ·
HEX DB 4 ASCI DB ? DATA ENDS
· ·
BEING: MOV AX,DATA (1) MOV DS,AX (2) MOV BX,OFFSET TABLE XOR AX,AX
MOV AL,_30H___(3)_____? ADD BX,AX MOV AL,[BX]
MOV _ASCI___(4)____,AL MOV AH,4CH INT 21H COSEG ENDS
END _BEING___(5)_______ 8、编制一程序,求两个数组对应的数据之差,并把结果存入新数组SUM之中。计算一直进行到两数之差为零或数组结束。将新数组的长度存于LEN单元中。
DSEG SEGMENT
ARRAY1 DB 71,21,40,44,34,32,28,171 ARRAY2 DB 12,15,70,40,10,87,524,713 CUNT EQU $-ARRAY2 LEN DB ?
SUM DB 20H DUP(0) DSEG ENDS
21