习题
一、选择题
1.下列描述正确的是_______。
A.汇编语言源程序可直接运行
B.汇编语言属于低级语言
C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。
D.汇编语言可以移植
答案:B
2. 分析下面的程序,变量VAR2的偏移地址是______。
DATA  SEGMENT
      ORG 2
VAR1  DB  2,3,4
      ORG $+3
VAR2  DW 1234H
DATA  ENDS
A.02H        B.04H        C.05H        D.08H
答案:D
3.为了使MOV AX, VAR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果?
A.VAR DW 4142H        B.VAR DW 16706        C.VAR DB 42H, 41H    D.VAR DW ‘AB’
答案:C
4.下列伪指令中______是正确的。
A.ERR1:DW 99        B.ERR2 DB 25*60        C.COUNT EQU 20        D.ONE DB ONE
答案:C
5.执行下列指令后,寄存器CL的值是_______。
STR1    DW        ‘AB’
STR2    DB        16    DUP(?)
CNT        EQU    $-STR1
            MOV    CX,    CNT
            MOV    AX,    STR1
            HLT
A.10H        B.12H        C.0EH        D.0FH
答案:B
二、填空题
1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DEBUG调试程序,调试可执行目标程序。
答案:.asm  .obj  .exe
2.执行下列指令后,(AX)=______,(BL)=_______。
A    DW        ‘EF’
B    DB        ‘ABCDEF’
MOV    AX,    A
MOV    BL,    B[3]
HLT
答案:4546H        44H
3.执行下面程序段后,AL中的内容是______。
BUF        DW        1234H, 5678H, 0001H
MOV    BX,    OFFSET    BUF
MOV    AL,    2
XLAT
答案:78H
4.若符号定义语句如下,则L=_______。
BUF1    DB    1, 2, ‘12’
BUF2    DB    0
L        EQU    BUF2-BUF1
答案:4
5.执行下列程序段后,BX寄存器间址单元的内容是______。
ORG    1FFFH
DB    4FH, 50H, 51H
MOV    BX,    1FFFH
INC        [BX]
INC        BX
DEC    [BX]
答案:4FH
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:
TABLE1        DB    ?
TABLE2        DW    20 DUP(?)
TABLE3        DB    ‘ABCD’
......
    MOV    AX,        TYPE  TABLE1;        (AX)=___
    MOV    BX,        TYPE    TABLE2;        (BX)=____
    MOV    CX,        LENGTH      TABLE2;  (CX)=_____
    MOV    DX,        SIZE    TABLE2    ;    (DX)=_____
    MOV    SI,        LENGTH      TABLE3;  (SI)=_______
答案:1  2  20  40  1 
7.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。请填写出正确结果。
DATA    SEGNEBT
FIRST    DB    _____, _____, 0H
SECOND    DB    _____,______
DATA    ENDS
CODE    SEGMENT
            ASSUME    CS:CODE, DS: DATA
START:    MOV    AX,    DATA
            MOV    DS,    AX
            MOV    CX,    _____
            MOV    SI,    0
            _________
NEXT:    MOV    AL,    SECOND[SI]
            ADC    FIRST[SI],    AL
            INC        SI
            LOOP    NEXT
            MOV    AL,    0
            ADC    AL,    ______
            MOV    FIRST[SI],    AL
            MOV    AH,    4CH
            INT        21H
CODE    ENDS
            END    START
答案:0BH    8AH        05H        D7H        2        CLC        0
8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在DAT2字节中,填空使程序正确实现此功能。程序执行后,DAT2单元中的内容是______。
DATA  SEGMENT
DAT1    DB    65H, 88H, 20H, 0F6H
N        EQU  $-DAT1
DAT2    DB  ?
DATA    ENDS
CODE    SEGMENT
    _________________
START:    MOV AX, DATA
        __________
        LEA  SI, DAT1
        MOV  CX, N-1
        MOV  AL, [SI]
        TEST  AL, 80H
        JZ  LP0
        NEG  AL
LP0:        MOV  DAT2, AL
LP1:        _________
        MOV  BL, [SI]
        TEST  BL, 80H
        JZ  LP2
        NEG  BL
LP2:        ________
        JB  LP3
        MOV  DAT2, BL
        MOV  AL, BL
LP3:        ________
        MOV  AH, 4CH
        INT 21H
CODE  ENDS
        END    START
答案:
ASSUME DS:DATA, SS:STACK, CS:CODE
MOV  DS, AX
INC  SI
CMP  DAT2, BL
LOOP  LP1
DAT2单元中的内容:0AH
9.填空说明在下列程序段执行过程中相应寄存器中的值。假设程序执行前DS=3000H,SS=2000H,SP=3000H,AX=4567H,BX=1234H,CX=6789H。
AND  BX, 00FFH
CALL  MYSUB
NOP        ;SP=________
            ;AX=_______
            ;BX=_______
HLT
MYSUB  PROC
        PUSH  AX
        PUSH  BX
        PUSH  CX
        SUB  AX, BX    ;SP=______
        POP  CX
        POP  AX
        POP  BX
        NOP            ;SP=______
        RET
MYSUB  ENDP
答案:3000H  0034H  4567H  2FF8H  2FFEH
10.完善程序。BUFFER单元开始放置一个数据块,BUFFER单元存放预计数据块的长度为20H,BUFFER+1单元存放的是实际从键盘输入的字符串的长度,从BUFFER+2开始存放的是从键盘接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。
MOV  DX, OFFSET BUFFER
MOV  AH, _______
INT  21H                ;读入字符串
LEA  DX, ______
MOV  AL, ______        ;实际读入的字符串的字符个数
MOV  AH, 0
ADD  BX, AX
MOV  AL, ____
MOV  [BX+1], AL
MOV  AH, _____
INC  DX                ;确定显示字符串的首址
INT  21H
MOV  AH, _____            ;系统返回DOS
INT  21H
答案:0AH  BUFFER+1  [BX]  '$'或24H  9  4CH
三、问答题
1.变量和标号有哪些属性?它们的区别是什么?
答案:变量、标号还有常量是汇编语言中使用的操作数,是3种基本的数据项。变量和标号都有段属性、偏移属性和类型属性3种属性,但含义不同。
变量通常指存放在存储单元中的值,在程序的运行中是可以修改的。所有的变量都具有3个属性。
(1)段属性:指变量所在段的段基址,此值必须在一个段寄存器中。
(2)偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:指变量中每个元素所包含的字节数。
标号是可执行指令语句的地址的符号表示,它可作为转移指令和调用指令CALL的目标操作数,以确定程序转向的目标地址,它也具有3个属性:
(1)段属性:指标号所在段的段基址。标号的段是它所出现的那个代码段,由CS指示。
(2)偏移属性:指标号所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。NEAR和FAR
2.指出下列伪指令语句中的错误:
(1) DATA  DB 395
(2)PRGM  SEG
  ……
  PRGM  ENDS
(3)ALPHA EQU BETA
(4) COUNT EQU 100
  COUNT EQU 65
(5) GOON DW  10DUP(?)
  ……
        JMP GOON
答案:
(1)字节变量,范围在0~255
(2)定义段的伪指令为SEGMENT
(3)BETA必须先定义
(4)EQU不能重复定义,在下一次定义前必须用PURGE撤消
(5)转移指令必须转移到指令上,不允许转移到数据变量上。
3.一数据段如下:
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255
QA1=QA  GT 3000
QA2=0FFFH
QA3 EQU QA2 XOR 255
QA4=88 MOD 5
QA5=88H SHR 2
QA6 EQU QA3/16+15
  ORG 1060H
G1  DB 32, QA, 98/2, NOT 25
G2  DW 0FF6H, OFFSET G2
G3  DW  3DUP(5)
G4  DW  SEG G1
SA  EQU  LENGTH  G3
SB  EQU  SIZE  G3
SC=TYPE G3
  ORG  1200H
F1 EQU THIS WORD汇编table指令什么意思
F2  DB  11H, 22H, 33H, 44H
FF  DD  12345H
DATA  ENDS
(1)写出每个符号所对应的值
(2)画出内存分配图
(3)执行下列指令后,对应的寄存器的值为多少
MOV  AX, WORE  PTR  FF
AND  AX, 0FFH
MOV  BX, WORD  PTR  G1
MOV  BX, 255 AND  0FH
ADD  AX, OFFSET  F2
MOV  BX, F1
答案:
(1)
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255                    ;QA=255
QA1=QA  GT 3000            ;255大于3000,命题假,QA1=0
QA2=0FFFH                    ;QA2=0FFFH
QA3 EQU QA2 XOR 255        ;QA3=0FFFH0FFH=0F00H
QA4=88 MOD 5                ;QA4=3

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。