六个状态标志位的全称_什么是标志位

六个状态标志位的全称_什么是标志位汇编语言程序设计复习题2011-11-21汇编语言第01章习题(80X86微型计算机的组织)1-12 在实模式操作下,段寄存器的用途是什么?答:段寄存器是用来定义数据段得起始地址的。在实模式下,它定义一个最大64KB存储段的起点。1-15&n

汇编语言程序设计复习题   2011-11-21   汇编语言第01章习题(80X86微型计算机的组织)   1-12 在实模式操作下,段寄存器的用途是什么?   答:段寄存器是用来定义数据段得起始地址的。在实模式下,它定义一个最大64KB存储段的起点。   1-15 实模式存储器地址允许访问低于哪个地址的存储区?   答:在实模式下,存储器寻址允许访问低于FFFF:FFFF地址的存储区。   1-18堆栈存储器由(堆栈)段加(堆栈指针)偏移的组合来寻址   1-19如果用基指针(BP)寻址存储器,则寻址的数据在(段)中   1-20 80286工作在实模式下,给出下列寄存器组合所寻址的存储单地址。   (a)DS=1000H  和 DI=2000H      12000H   (b)DS=2000H  和 SI=1002H      21002H   (c)SS=2300H   和 BP=3200H     26200H   (d)DS=A000H  和 BX=1000H      A1000H   (e)SS=2900H   和 SP=3A00H     2CA00H   ▲十六进制数88H可以被其他形式的数所表示, 下列哪种表示方法是错的? D    A. 无符号十进制136            C. BCD码 88      B. 带符号十进制–120           D. 带符号数据 –8   ▲如果DH=10H, 执行NEG DH 指令, 正确的结果是? D      A.  DH=10H   C=1             C. DH=10H   C=0      B.  DH=0F0H   C=0            D. DH=0F0H   C=1   ▲哪个是指令指针寄存器?A       A.IP   B.SP  C.BP   D.PSW (程序状态字)   ▲如果 AX=1000H,       NEG  AX;       NEG  AX;      上面两条指令执行后, AX= ? C      a.1001H    b.1002H    c.1000H    d.0F000H   [ 解释:NEG是汇编指令中的求补指令,NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数。求补运算也可以表达成:将操作数按位取反后加1。]       汇编语言第02章习题(寻址方式与汇编语言程序的组织)   2.2  有两个16位的字1EE5H 和 2A3CH 存储在IBM PC 的000B0H 和000B03H 的内存单中,请以图表的形式说明内存中的存储情况       解:(遵照高高低低的原则)           内存地址       内容           000B4H        2AH           000B3H        3CH           000B2H               000B1H        1EH           000B0H        E5H   2.3 如下图, 展示的是IBM PC的内存信息, 请说明30022H 字节单和30024H字节单的内容,和30021H 字单和30022H 字单的内容。   存储器    内容   30020H    12H   30021H    34H   30022H    ABH   30023H    CDH    30024H    EFH    解:(遵照高高低低的原则)   字节:30022H字节单的内容=0ABH                 30024H字节单的内容=0EFH   字:30021H字单的内容=0AB34H            30022H字单的内容=0 CDABH   2.4  3017:000A的段地址的物理地址和偏移量是什么?      3015:002A和3010:007A的段地址和偏移是什么?   解:(物理地址及偏移地址的计算方法)   物理地址1:PA= 3017 × 10H + 000AH = 3017AH   物理地址2: PA= 3015 × 10H + 002AH = 3017AH   物理地址3: PA= 3010 × 10H + 007AH = 3017AH   2.5 运行程序之前, (CS)=0A7F0H,(IP)=2B40H, 程序的第一个字的物理地址是什么?     解:(程序每次执行指令的地址的是CS:IP)    PA=(CS)×10H+(IP)= 0A7F00H + 2B40H = 0AAA40H   2.6 在内存中,每一段都顶多有10000H字节。下面是用DEBUG的命令“r”来在终端上展示寄存器的内容。请以图表的形式显示内存是如何划分成段的,还有OF,SF,ZF,CF的值。   终端显示的内容:   AX=0000 BX=0000 CX=0070 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000   DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC      解:此时 OF,SF, ZF, CF 都为0。       (几乎是每10000H就划分一个段)   10E40-10F40-数据段   10F40-20F40-附加段   21F00-31F00-堆栈段   31FF00-41FF0-代码段   2.8哪类型的寄存器可以用来显示内存地址   解:CS, DS, ES, SS, EAX, EBX, ECX, EDX, EBP, EIP, ESP, EDI, IP, SP, BP, BX, DI, SI   2.9 CPU–分析,控制和运行指令的组件, 包含 算术逻辑单和一组寄存器。       内存――内存存储过程,数据等等, PC中,有RAM 和ROM       Stack――存储空间,以后进先出的方式工作。       IP――存储下一条要运行的指令       SP――存储当前栈顶地址的寄存器       状态标志位――变址位记录指令运行的结果, 包含6 个位, OF,SF,ZF, AF,PF,CF。   控制标志位――控制指令的标志, PC中有三个位, 是DF,IF,TF.       段寄存器――寄存器存储每一个逻辑段起始地址, PC中有4种,分别是CS,DS,SS 和ES。       物理地址――显示存储空间中每一个字节的唯一的地址。       汇编语言――用指令的助记符,符号地址,标号等符号书写程序的语言。       机器语言――能被计算机直接识别的语言。       汇编程序――把汇编语言程序翻译成机器语言程序的系统程序。       连接程序――把若干个模块连接起来成为可执行文件的系统程序。       指令――告诉CPU要执行的操作(一般还要指出操作数的地址),在程序运行是执行。       伪指令――由汇编程序在汇编过程中执行的指令。    ▲假定DS = 5788H, 偏移地址94H, 字节的PA(物理地址) 是(B ).                        a.57974H    b.57914H     c. 5883H   d. 58ECH   ▲在段中寻址的时候,在8086CPU的寄存器中,哪些寄存器可以提供偏移地址(B )          A. AX, BX, CX, DX       B. BX, BP, SI, DI       C. SP, IP, BP, DX        D. CS, DS, ES, SS   2-1下面的MOV指令完成什么操作?   (a)MOV AX,BX;      (c)MOV BL,CH;    解:(mov指令的考察)   (a) 把BX的内容移动到AX中     (c) 把CH的内容移动到BL中   2-2 列出寄存器寻址使用的8位寄存器   解:(寄存器位数的考察)   AH、AL、BH、BL、CH、CL、DH和DL   2-3列出寄存器寻址使用的16位寄存器   解:(寄存器位数的考察)   AX、BX、CX、DX、SI、DI、SP、BP和段寄存器。   2-6 指令MOV  BL,CX 错在哪里?   解:BL和CX的位数不一致。   2-7 指令MOV DS,SS 错在哪里?   解:两个寄存器之间是不能直接传送数据的。   2-13 指令 MOV [BX],[DL] 错在哪里   解:目标操作数寻址方式错误。   2-17给定DS=1200H,BX=0100H和SI=0250H。假定按实模式操作,确定下面每条指令寻址的地址:   解: (a)MOV  [100H],DL;      12100H        (c)MOV  DL,[BX+100H];   12200H   2-18 给定DS=1100H,BX=0200H,LIST=0250和SI=0500H。假定按实模式操作,确定下面每条指令寻址的地址:   解:(b) MOV CL,LIST[BX+SI];     11950H   2-19 给定DS=1300H,SS=1400H,BP=1500H和SI=0100H。假定按实模式操作,确定下面每条指令寻址的地址:   解:(b) MOV AL,[BP+SI+200H];     14800H   2-20 哪些基址寄存器可以寻址堆栈段的数据?       解:SS, SP   3.1 给出(BX)=637DH,(SI)=2A9BH,偏移量D=7237H,尝试指出下列每一种寻址模式的有效地址。   (1) 立即寻址;                      解: (1) 无   (2) 直接寻址                         (2) EA=7237H   (3) 用BX的寄存器寻址;               (3) 无   (4)  用BX的寄存器间接寻址;           (4) EA=637DH   (5)  用BX的寄存器相对寻址;           (5) EA=D+[BX]=7237H+637DH=0D5B4H   (6)  基址变址寻址                     (6) EA=[BX]+[SI]=637DH+2A9BH=8E18H   (7) 相对基址变址寻址                 (7) EA=D+[BX]+[SI]=7237H+637DH+2A9BH=1004FH   3.2 根据下列要求, 写出相关的汇编语言指令。   (1) 把BX 的内容和DX 的内容相加,结果放入DX 中。   (2) 把AL的内容加上内存地址的内容,并把结果放到AL中。内存地址由BX和SI进行基址变址寻址所得。   (3)把CX的内容加上内存地址的一个字,并把结果放到内存地址中。内存地址由BX和偏移量0B2H进行寄存器相对寻址所得。   (4) 把内存地址的内容与数2A59H相加,并把结果放入内存地址。内存地址由偏移量0524H进行直接寻址所得。   (5) 把数值0B5H 与AL 寄存器的内容相加, 结果放入AL寄存器。   解:(ADD指令的使用)   (1) ADD  DX, BX   (2) ADD  AL, BX[SI]   (3) ADD  WORD PTR 0B2H [BX], CX   (4) ADD  WORD PTR [0524H], 2A59H   (5 )ADD  AL, 0B5H   3.3 写出指令,把首址是BLOCK的字数组中的第六个字移入DX寄存器。使用如下的寻址方式。   (1) 寄存器间接寻址   (2) 寄存器相对寻址   (3) 基址变址寻址   解: (1) LEA  BX, BLOCK+10    MOV  DX, WORD PTR [BX]     (2) LEA  SI, BLOCK     MOV  DX, WORD PTR 0AH[SI]     (3) LEA  BX, BLOCK        MOV  SI, 0AH    MOV  DX, WORD PTR [BX][SI]   3.4给出(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH,(21201)=4CH,(21202)=B7H, (21203)=65H,   尝试解释:执行指令后,AX寄存器的内容。   (1)  MOV  AX, 1200H                    解: (1) (AX)=1200H   (3) MOV  AX, [1200H]                       (3) (AX)=4C2AH   (5) MOV  AX, 1100[BX]                      (5) (AX)=4C2AH   (7) MOV  AX, 1100[BX][SI]                   (7) (AX)=65B7H   3.8 给出(DS)=2000H,(ES)=2100H,(SS)=00A0H,(BX)=0100H,(BP)=0010H,数据段中VAL 的偏移地址是0050H,指出源操作数段的寻址方式和物理地址。    (2) MOV  AX, BX                 解:(2) 寄存器寻址   (4) MOV  AX, VAL                    (4) 直接寻址,物理地址=20050H    (6) MOV  AX, ES:[BX]                 (6) 寄存器间接寻址,物理地址=21100H   (8) MOV  AX, [SI]                    (8) 寄存器间接寻址,物理地址=200A0H   (10)MOV  AX, VAL[BX]                (10) 寄存器相对寻址,物理地址=20150H   (12)MOV  AX, VAL[BX][SI]             (12) 相对基址变址寻址,物理地址=201F0H   ▲ 当执行POP [BX] 和寻找目标操作数时,段地址跟偏移地址是在(B )中。     a. 无段地址也无偏移地址     b. DS 和BX中     c. ES 和 BX中     d. SS 和 SP中   ▲下列指令中, 哪个是错的?           解:D错误:  立即数不能直接到段寄存器     a.  MOV  SS:[BX+DI],1000H     b.  MOV  DX, 1000H     c.  MOV  WORD PTR [BX],1000H     d.  MOV  DS, 2000H   1. 指出下列的错误:   1) MOV  AH, BX                ; 操作数大小不同   2) MOV  [BX], [SI]               ; 出错:不能内存与内存之间直接传输数据   3) MOV  AX,[SI] [DI]             ; 出错: [SI][DI]不能作为基址相对寻址的组合   4) MOV  MYDAT [BX][SI], ES:AX    ; 出错:不能内存与内存之间直接传输数据   5) MOV  BYTE  PTR[BX], 1000     ; 操作数大小不同   6) MOV  BX, OFFSET MYDAT[SI]     ; offset指令是标号处的地址,这里应删除[SI]   7) MOV  CS, AX                  ; 出错: CS 段寄存器不能作为第一操作数   2. 给出DS = 6400h, BX = 0743h, SS=6500H, BP = CA40h, SI = 2100h 和 DI = 04A4h, 而且BETA是一个偏移量为0202h的数据项 (名称/变量), 对于下列每一条指令指出其寻址方式且计算出源操作数和目标操作数的20-位的物理地址:   • (i) MOV AL, [BP][SI]    ; 基址变址寻址  72B40H   • (ii) MOV [BX + DI + 4],  AX     ; 相对基址变址寻址   64BEBH   • (iii) MOV BETA, BL              ; 直接寻址  64202H   • (iv) MOV AH, [BP][DI + BETA]     ; 相对基址变址变址  710E6   • (v) LODSB                    ; 寄存器寻址 66100H       汇编语言第03章习题(数据传送指令)   3.10  TABLE 是一个在数据段中0032上的符号, 它的内容是1234H, 下面指令有什么不同?执行指令后AX寄存器的内容是什么?   (1)MOV AX, TABLE   (2)LEA AX, TABLE   解:(1)mov指令是将内容放进目的操作数   (AX)=1234H      (2)而LEA指令是将偏移地址放入目的操作数  (AX)=0032H   3.11 执行下列指令后AX 寄存器的内容是什么?   TABLE DW 10, 20, 30, 40, 50   ENTRY DW 3         MOV BX, OFFSET TABLE         ADD BX, ENTRY         MOV AX, [BX]   解:第一步: (BX)=0000H       第二步: (BX)=0003H       第三步: (AX)=3000H   3.13 给出SS 寄存器的内容是0FFA0H, 和SP 寄存器的内容是00B0H。首先执行两个PUSH 指令把8057H 和0F79H 压入栈中, 然后执行POP 指令. 请以图表的形式给出栈的变化和SP的值 (用下划线划出内存单的物理地址).   解:   第一步:PUSH 8057H   第二步:PUSH 0F79H   第三步:POP       第一步:压栈前:SS:SP = 0FFA0H:00B0H, 压栈后:SS:SP = 0FFA0H:00AFH   第二步:压栈前:SS:SP = 0FFA0H:00AFH, 压栈后:SS:SP = 0FFA0H:00ADH   第三步:出栈前:SS:SP = 0FFA0H:00ADH, 出栈后:SS:SP = 0FFA0H:00AFH   7.8下列指令中,符号ABCD 是一个变量。说出两条指令的不同。   MOV AX, OFFSET ABCD   LEA AX, ABCD   答:两条指令都是取ABCD的偏移地址,但MOV指令能以更少的时间完成同样的功能。   3. 回答执行指令后的问题:   A DW 1234H   B DW 5678H   ……   PUSH A   PUSH B   POP A   POP B   解:   ① 执行之后(A)=5678H ,  ( B)= 1234H   ② 执行程序之前SP=200H,  执行之后SP= 200H   4. 读程序题:   DATA SEGMENT   A DB 12H,’12’   B DW 34H,45H   C DW B   DATA ENDS   …………   在下列的指令完成之后,排列主存储器中的数据段。   MOV  AX, A+1;  AX=3231H   LEA  BX, B;    BX=0003H   MOV  CX, C;    CX=0003H   解:00H_______高地址处_DATA+8       03H__C       00H       45H       00H       34H__B       32H       31H       12H_A_____低地址处_DATA+0   1. 程序分析:    MOV AX,6540H   MOV DX,3210H   MOV CL,04   SHL DX,CL   MOV BL,AH   SHL AX,CL   SHR BL,CL   OR DL,BL                 解:执行指令后:(AX)=5400H,(BL)=06H,(DX)=2106H   2. 程序分析:    MOV AL,200   SAR AL,1   MOV BL,AL   MOV CL,2   SAR AL,CL   ADD AL,BL   解:执行指令之后(BL)=0E4H,(AL)=0DDH   ▲当在串指令之前使用REPE立即前缀时, 当 (C ),串指令将会停止。    A.  CX = 0 AND ZF = 0   B.  CX = 0 AND ZF = 1   C.   CX = 0 OR ZF = 0   D.  CX = 0 OR ZF = 1   ▲.当在串指令之前使用REPE 立即前缀时,当 ( C ),串指令将会停止。   A.   CX=0 and ZF=0  B. CX=0 and ZF=1  C.   CX=0  or  ZF=0  D. CX=0  or  ZF=1   ▲下列哪条指令有合理和充分的意义? D   A.   REP LODSB B.  REP SCASB   C.   REP CMPSB      D.  REP MOVSB   3. 英特尔 8086 CPU中的每一个寄存器都是为在执行指令时的一些特定的功能而设计的. 描述使用或者修改下列寄存器的两条特别的指令。   • (i) SP,   •   (ii) SI,                    • (iii) DX.   解:PUSH  DX;    POP    SI ;   3.47指令填空:      (1) LOOP  L20    (2)LOOPE  L20      (3)LOOPNE  L20   尝试指出在3个不同情况下,程序执行之后AX,BX,CX,DX 寄存器的内容 ?    TITLE         EXLOOP.COM   CODESG       SEGMENT   ASSUME CS: CODESG, DS: CODESG,SS:CODESG                OGR     100H   BEGIN:        MOV   AX, 01                 MOV   BX, 02                 MOV   DX, 03                MOV   CX, 04   L20:           INC     AX                 ADD    BX, AX                 SHR     DX, 1                       (   )                 RET   CODESG       ENDS   END     BEGIN   解: (1) LOOP  L20 :  AX=05H ; BX=10H ; CX=00H ; DX= 00H           (2) LOOPNE  L20: AX=03H; BX=7H; CX=2H ; DX=00H      (3)LOOPE L20:没有进行循环  AX=02H; BX=4H; CX=3H; DX=1H   汇编语言第04章习题(算术与逻辑运算指令)   4-1  写出ADD指令,完成如下操作:   (a) 把BX 加到AX ———— ADD AX, BX   (b) 把12H加到AL ———— ADD AL, 12H   (c ) 把 EDI 加到 EDP ———— ADD EDP, EDI   (d) 把22H 加到 CX ———— ADD CX. 22H   (e) 把SI的地址数据加到AL ———— ADD AL, [SI]   (f ) 把CX 加到FROG地址的数据上———— ADD FROG, CX   4.2 指出指令ADD ECX,AX的错误?   解: ECX 和AX的大小不一致。ECX为32位,而AX为16位。   4.3 可以用ADD 指令把CX 加到DS吗?    解: 不可以,因为DS是段寄存器。ADD指令不能直接对段寄存器进行操作。   4.4 给出AX=1001H,DX=20FFH,执行ADD AX,DX后,列出标志寄存器的总和和每一位的内容。   解:总和:            AX=3100H = 1001H + 20FFH    标志寄存器的内容:C=0;  最高位没有进位   A=1;  第三和第四位没有进位   S=0;  结果为正   Z=0;  结果非零   O=0;  结果没有溢出   4.6 设计一个简短的程序,把AX,SX,CX,DX 和SP 累加在一起,把结果存进DI中。   解:LEIJIA   PROC  NEAR                   ADD  AX, SX                   ADD  AX, CX                   ADD  AX, DX                   ADD  AX, SP                   MOV  DI, AX                   RET   LEIJIA   ENDP   4.9  写出把sp的内容加1的指令。       解:INC  SP   4.10 写出SUB 指令,完成如下操作。   解:(a) 从AX中减去BX ————  SUB  AX,  BX     (b) 从 DH中减去 0EEH ————  SUB  DH,  0EEH   4.11 解释SBB [DI-4],DX的结果   解:从由DI-4寻址的内存单中,减去CX,同时也减去借位。   4.12 解释SUB 和CMP指令的不同   解:  指令SUB的功能:从源操作数减去目标操作数,然后把结果存储到目标操作数,            CMP指令的功能:并不会改变两个操作数的内容,只会改变标志位 。   4.13  当8-位 操作数加上另外一个数,结果存在哪里?   解:在AX 寄存器中。   4.14  MUL EDI 的结果存在哪里?   解:在 EDX – EAX中。   4.15  当8-bit 操作数被除时,结果存在哪里?   解: AX.   4.16  写一个简短的程序, 把BL中的数据除以CL中的数据, 然后把结果加上2,最后的结果存在 DX中, 是16-位数。   解:MOV AL, BL       MOV AH, 0   DIV CL   MOV AH, 0   ADD AX, 2   MOV DX, AX   汇编语言第05章习题(程序控制语句)   ▲BLK1 DB 46,84,34,-5,20,122,73     MOV CX,7     LEA S1,BLK1     NEXT: MOV AL,[SI]     INC SI     TEST AL,81H     LOOPZ NEXT     MOV BL,[SI]   执行指令之后:(AL)=0FBH(BL)=20 / 14H   ▲假定VAR1 和 VAR2 是字变量, LAB 是标签, 指出下列的错误:   ADD VAR1,VAR2               SUB  AL, VAR1   JMP   LAB[SI]   JNZ   VAR1   JMP   NEAR  LAB   错误:    1.ADD 内存, 内存   2. 两个操作数大小不同   3.删除[SI] 或者 删除 LAB   4. 条件跳转范围<= 字节, 不是字   5. 应该是JMP NEAR PTR LAB       ▲AND AL,AL     JZ BRCH1     RCR AL,1     JZ BRCH2     RCL AL,1     INC AL     JZ BRCH3   执行指令之后, 回答:   (1)当(AL)=0时,程序跳到BRCH1   (2)当(AL)=1时,程序跳到BRCH2   (3)当(AL)=0FFH时,程序跳到BRCH3         答案:   1. JE   K1                       2. CLD     K1:    MOV   PLW,  AX           SUB SI,2   汇编语言第07章习题(汇编语言程序设计)   ▲汇编程序的语句中,可以省略 (B)       A. 名称    B. 操作符   C. 操作数   d.注释   ▲正确结束伪操作的句子是( C)   A. 汇编程序把伪操作翻译成机器代码。   B. 伪操作在程序执行期间完成它的功能。   C. 伪操作的功能是告诉汇编程序在汇编过程实现特殊的处理   ▲执行下列指令后, 变量DAB 的内容是C       DAW   DW   2A05H       DAB    DB    0FAH       …       MOV  AL, BYTE  PTR  DAW       SUB  DAB,  AL       a. 0DAH      b. 0FAH       c.  0F5H       d.  0D0H   ▲BUF  DW  10H  DUP (3 DUP (2, 10H), 3, 5)汇编了语句后, 变量BUF所分配的地址是(b).      a.  80H       b. 100H       c. 124H       d.  192H       ▲ARY  DW  10 DUP(?)          …        MOV  AL, TYPE ARY        MOV  BL, LENGTH  ARY    MOV  AL,  SIZE  ARY   一系列MOV指令运行后,结果是 ?     答案: (AL)=2, (BL)=10D,(al)= 20D   ▲可汇编语句中,有两种类型的语句( 指令语句 ) 和 (伪指令语句)。   ▲ARY  DW  10DUP(?)         ……     MOV  AL, TYPE  ARY   ;执行后(AL)=2     MOV  CL, SIZE   ARY   ;执行后(CL)= 20   ▲分析程序   DA_BY  DB  83H,73H,61H,94H,5AH         MOV  CX, WORD  PTR  DA_BY         AND  CX, 0FH         MOV  AL, DA_BY+3         SHL  AL, CL   上述指令执行后:AL=  A0H  ,CL=  03H   7.1 指令和伪操作的不同点?伪操作的功能是什么?    答案: 指令和伪操作的不同是是否生成可执行的机器码。   伪操作只是用来告诉汇编程序采取特殊的处理,不生成机器码。   7.3值表达式跟地址表达式的不同点?   答案: 值表达式是一个值可以在汇编过程中被汇编程序计算的表达式。   地址表达式表征着操作数内存项的地址。   7.4 在汇编程序中,变量和标签的不同点?    答案: 标签表示机器指令码所在的内存位置;  变量表示着值所在的内存位置;   7.5 计算下面表达式的值   ①23H AND 45H OR 67 ②1234H/16+10H   ⑤LOW 1234H OR HIGH 5678H ⑥23H SHL 4   答案:  ① 43H ②133H   ⑤ 76H ⑥230H   7.7 如果有如下的一个程序段. 写出运行后AX寄存器的内容   ORG 100H   100 VARW DW 1234H,5678H   104 VARB  DB 3,4   106 VARD  DD H   10A BUFF  DB 10 DUP(?)   114 MESS  DB ‘HELLO’   119 BEGIN: MOV AX,OFFSET VARB+OFFSET MESS ;218H       MOV AX,TYPE BUFF+TYPE MESS+TYPE VARD;6H   MOV AX,SIZE VARW+SIZE BUFF+SIZE MESS;0DH   MOV AX,LENGTH VARW+LENGTH VARD ;2H   MOV  AX,LENGTH BUFF+SIZE VARW ;CH   MOV AX,  TYPE  BEGIN ;-1   MOV  AX,  OFFSET BEGIN ;119H   3.  对于END 伪操作, 那一句是对的? C     a.  END 伪操作是一个可执行指令。     b.  END 伪操作指明执行程序的终止之处。     c.  END 伪操作指明整个源程序的终止。     d. END 伪操作会在汇编过程生成机器码。   ▲DATA    SEGMENT                     ORG  20H         NUM1 = 8             NUM2 = NUM1 + 10H     DA1     DB ‘COMPUTER’         DB 0AH, 0DH     COUNT  EQU $-DA1     DA2     DW ‘CO’, ‘MP’, ‘UT’, ‘ER’     DATA    ENDS     答案: (1) DA1的偏移量是_____20H____          (2) COUNT的值是__10D____          (3) DA2的内容+2 字节的位置是 _P_   ▲DA3     EQU    WORD PTR  DA4     DA4 DB     0ABH, 89H     …   SHR    DA3, 1   MOV  DX,   DA3   SHL    DA4, 1   MOV  CX, DA3   程序执行之后:CX= 44AAH,  DX=44D5H   7.12如下程序段中有几个语句. 解释每一个符号的属性。   SYMB1  LABEL  BYTE   SYM2  EQU  THIS  BYTE   SYMB3  DW ?   SYMB4  EQU  BYTE  PTR  SYMB3   答案:  SYMB1     BYTE          SYM2      BYTE          SYMB3     WORD          SYMB4     BYTE   4.7 请定义一个数据段DATASG, 在段中定义字符变量和数据变量,要求如下:   (1) FLD1B 是一个字符变量: ’personal computer’;   (2) FLD2B十进制数的字节变量 32;    (3) FLD6B 10 个0的字节变量;   (4) FLD7B 是一个硬件名称的列表 (ASCII code) 和数量(十进制数)   (10)FLD3W 是(7)中硬件列表地址变量。   (11)FLD4W 是一个字变量包含5 个十进制数:5,6,7,8,9;   (13)FLD6W 是段中字节数据变量地址和字数据变量地址之差。   答案: DATASG SEGMENT   FLD1B DB ‘personal computer’   FLD2B DB 32   FLD6B   DB 10 DUP(0)   FLD7B DB ‘PART1’,20,’PART2’,50,’PART3’,14   FLD3W DW FLD7B   FLD4W DW 5,6,7,8,9   FLD6W DW FLD3W-FLD1B   4.8有一个数据段如下定义,PLENTH的值是多少? 意味着什么?       PARTNO     DW ?       PNAME DB 16 DUP(?)   COUNT DD ?   PLENTH EQU $-PARTNO   答案: 值是22.相对PARTNO的偏移量   BUFF DB 1,2,3,’123’   EBUFF  DB 0   L EQU EBUFF-BUFF   答案:L的值是6    4.10 有如下数据段。   (1) 用MOV 指令把LNAME的有效地址移到AX。   (2) 用一条指令来移动CODE_LIST前两个字节的内容到SI。   (3) 编写伪操作让CODE_LIST的与段得长度相等.    LNAME     DB  30 DUP (?)   ADDRESS   DB  30 DUP(?)   CITY       DB  15 DUP(?)   CODE_LIST  DB  1,7,8,3,2   答案:(1) MOV  AX, OFFSET  LNAME   (2) MOV   SI , WORD PTR CODE_LIST   (3) CODE_LENTH  EQU   $-CODE_LIST    4.11 尝试写出整个数据段DATA_SEG, 它把5赋给一个字节, 且把整数–1,0,2,5 和4 放入10个字的数组DATA_LIST的前5个单 。然后写出整个代码段, 功能是把DATA_LIST的前5 个数中的最大值和最小值放到 MAX 和 MIN。   答案: DATA_SEG    SEGMENT    DATA1 DB  5    DATA_LIST    DW  -1,0,2,5,4, 5 DUP(?)    MAX DB  ?    MIN DB  ?        DATA_SEG    ENDS        CODE_SEG    SEGMENT      ASSUME   DS:DATA_SEG,CS:CODE_SEG    BEGIN:    MOV  MAX, 5                  MOV  MIN, -1    CODE_SEG   ENDS        END  BEGIN   ▲编写指令:   1. D1   DB  20H  DUP(?)     D2   DW    D1   给出三种方式,使用一条指令来把D1的偏移量载入到SI中。   答案: LEA    SI,   D1        MOV   SI,  OFFSET  D1        MOV    SI, D2       ▲.MODE  SMALL     .DATA     DFATA1    DW 2000H     DATA2     DW 3000H     .CODE     .STARTUP     LEA SI, DATA1          MOV DI,  OFFSET DATA2      MOV BX, [SI]          MOV CX, [DI]          MOV [SI], CX      MOV [DI], BX          .EXIT   END   程序执行之后: (DATA1) = 3000H   (DATA2) = 2000H   ▲键盘输入 (一个定义为X, 另一个是Y)  然后计算此表达式(X2+Y2-2XY+1)/2 ,把结果存进Z中 (假定X,Y 在[0,9]的范围内)。    DATA  SEGMENT          ;数据段.       x DB  0       y DB  0       z DB  0   DATA  ENDS   ;———————————————-   CODE   SEGMENT         ;代码段.       ASSUME   CS: CODE,DS: DATA   START:       PUSH CS       POP  DS   _INX:       MOV  AH, 1         ;输入字符.       INT  21H       CMP  AL, 30H       JB   _INX       CMP  AL, 3AH       JNB  _INX       SUB  AL, 30H       MOV  AH, 0       MOV  x,  AL       CALL OUT_0D0A   _INY:       MOV  AH, 1         ;输入字符.       INT  21H       CMP  AL, 30H       JB   _INY       CMP  AL, 3AH       JNB  _INY       SUB  AL, 30H       MOV  AH, 0       MOV  y,  AL       CALL OUT_0D0A   _INZ:       MOV AH,00H       MOV AL,x       MUL BYTE PTR x       MOV BX,AX       MOV AH,00H       MOV AL,y       MUL BYTE PTR y       ADD AX,BX       MOV BX,AX       MOV AH,00H       MOV AL,x   MUL BYTE PTR y       MOV CX,02H       MUL CX       SUB BX,AX       MOV AX,BX       MOV CL,02H       DIV CL       MOV z,AL   EXIT:           MOV  AH, 4CH       INT  21H   ;——————————   OUT_0D0A  PROC      ;回车换行.       MOV  DL, 13       CALL PUTC       MOV  DL, 10       CALL PUTC       RET   OUT_0D0A ENDP   CODE  ENDS       END  START       ▲ 让 DAT 内存位置包含一个字节的数据–9-+9, 且SQRTAB 定义一个数据平方的列表–9-+9。写一个子程序从列表SQRTAB中取出DAT中数字的平方, 把平方数存入到SQR的位置上.  同时, 编写主程序来调用这个子程序。   DATA SEGMENT   DAT DB XXH   SQRTAB DB 0, 1, 4, 9, …, 81   SQR DB ?   DATA  ENDS   DATA    SEGMENT   DAT     DB XXH   SQRTAB  DB 0, 1, 4, 9, …, 81   SQR     DB ?   DATA        ENDS   CODE       SEGMENT   ASSUME  CS : CODE   Main     PROC   FAR   MOV   AX, DATA   MOV   DS,AX   CALL  get square   MOV   AX, 4C00H   INT    21H   Main ENDP   CODE ENDS   END   Main   Get square   PROC  NEAR               TEST   DAT,  80H        JZ         positive        NEG   DAT   Positive      MOV  SI,  DAT        AND   SI,  0FH              MOV  AL,  SQUTAB[SI]         MOV   SQR,  AL              RET   Get square      ENDP    

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/28942.html

(0)
上一篇 2024年 9月 12日
下一篇 2024年 9月 12日

相关推荐

关注微信