|
1 假设VAR为字变量,LAB为标号,试指出下列指令的错误之处:
(1) SUB AL, VAR
(2) MOV [BX], [SI]
(3) MOV AX, [SI][DI]
(4) MOV CS, AX
(5) JMP NEAR LAB
(6) POP DH
2 说明下列语句所分配的存储空间及初始化的数据值。
(1)BYTE_VAR DB 'BYTE',12,-12H,3 DUP(0,?,2 DUP(1,2),?)
(2)WORD_VAR DW 5 DUP(0,1,2),?,-5,'BY','TE',256H
3 假设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP(?)
COUNT DD ?
PLENTH EQU $-PARTNO
问PLENTH的值为多少?
4 给出赋值语句如下:
ALPHA EQU 100
BETA EQU 25
GAMMA EQU 2
下列表达式的值是多少?
(1) ALPHA * 100 + BETA
(2) ALPHA MOD GAMMA + BETA
(3) ( ALPHA+2 ) * BETA - 2
(4) ( BETA/3 ) MOD 5
(5) ( ALPHA+3 ) * ( BETA MOD GAMMA )
(6) ALPHA GE GAMMA
(7) BETA AND 7
(8) GAMMA OR 3
5 假设数据段中数据定义如下:
VAR DW '34'
VAR1 DB 100, 'ABCD'
VAR2 DD 1
COUNT EQU $-VAR1
X DW 5 DUP (COUNT DUP (0))
Y LABEL WORD
Z DB '123456'
V DW 2, $-VAR
执行下面程序段并回答问题。
MOV AX, COUNT ; (AX) = ?
MOV BX, Z-X ; (BX) = ?
MOV CX, V+2 ; (CX) = ?
MOV DX, VAR ; (DX) = ?
MOV Y+3, 2
MOV SI, Y+4 ; (SI) = ?
ADD Z+5, 1
MOV DI, WORD PTR Z+4 ; (DI) = ?
6 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP(?)
TABLEB DB 'ABCD'
(1)MOV AX, TYPE FLDB
(2)MOV AX, TYPE TABLEA
(3)MOV CX, LENGTH TABLEA
(4)MOV DX, SIZE TABLEA
(5)MOV CX, LENGTH TABLEB
7 写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果存放在D_SEG中的SUM中。其中AUGEND、ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。
8 按下面的要求写出程序的框架。
(1) 数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;
(2) 堆栈段从小段开始,段组名为STACK;
(3) 代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;
(4) 程序结束。
9 编写一个完整的程序,要求把含有23H,24H,25H,26H四个字符数据的数据区复制20次。
|