阅读以下说明和X86汇编语言代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 设有数组X和Y。X数组中有X1,X2、…、X10十个数,Y中有Y1、Y2、…、 Y10十个数。编制程序计算: Z1=X1+Y1 Z2=X2+Y2 Z

admin2008-04-04  35

问题 阅读以下说明和X86汇编语言代码,将应填入(n)处的字句写在答题纸的对应栏内。
[说明]
   设有数组X和Y。X数组中有X1,X2、…、X10十个数,Y中有Y1、Y2、…、 Y10十个数。编制程序计算:
   Z1=X1+Y1  Z2=X2+Y2  Z3=X3-Y3  Z4=X4-Y4
   Z5=X5-Y5  Z6=X6+Y6  Z7=X7-Y7  Z8=X8-Y8
   Z9=X9+Y9  Z10=X10+Y10
   设置一个10位的标志尺:LOGIC_RULE,若它的每一位决定了当前按顺序该做加法(该位为0)或减法(该位为1)操作,则由上列等式可知LOGIC RULE中的低10位应是(1)。
[汇编程序代码]
datarea segment                           ;define data segment
x         dw           x1,x2,x3,x4,x5,x6,x7,x8,x9,x10
y         dw           y1,y2,y3,y4,y5,y6,y7,y8,y8,y10
z         dw           z1,z2,z3,z4,z5,z6,z7,z8,z9,z10
logic_ruledw              (2)            ;LOGIC_RULE initialize
datarea ends
program segment                            ;define code segment
main     proc     far
assume       cs:program, ds:datarea
start:                                    ;starting execution address
                     (3)                 ;save old data segment
             sub      ax, ax              ;put zero in AX
             push     ax                 ;save it on stack
;set DS register to current data segment
      mov ax,datarea
      mov       ds,ax
;MAIN PART OF PROGRAM GOES HERE
      mov       bx,0
      mov       ex,10
      mov       dx,logic_rule
  next:
      mov      ax,x[bx]
      shr       dx,1
      jc        subtract
             (4)        
      jmp      short result
subtract:
      sub      ax, y [bx]
result:
             (5)                   ;result=>Zn
      add      bx,2
      loop     next
      ret                          ;return to DOS
main endp
                                  ;end of main part of program
program ends
                                  ;end of code segment
      end      start                ;end of assembly
   附:指令及寄存器说明。
   MOV      传送字或字节
   PUSH     把字压入堆栈
   SHR      逻辑右移
   JC       有进位时转移
   JMP      无条件转移指令
   SUB      减法
   ADD      加法
   LOOP     CX不为零时循环
   JNE/JNZ  不等于时转移
   CMP      比较
   段寄存器2个:
   CS:     代码段寄存器
   DS:     数据段寄存器
   数据寄存器4个:
   AX:      累加器
   BX:      基址寄存器
   CX:      计数寄存器
   DX:      数据寄存器

选项

答案(1)Z1的+运算对应于第0位值为0,Z2的+运算对应于第1位值位0,直到Z10的运算对应于第9位,因此低10位为0011011100。 (2)LOGIC_RULE初始化为(1)计算的值,十六进制为00dch。 (3)把数据段压入堆栈,保存旧的数据段。 (4)dx是保存的LOGIC RULE值,逻辑右移一位是1则跳转到subtract执行减操作,否则顺序执行加操作。 (5)将执行的结果移入Z。

解析
转载请注明原文地址:https://kaotiyun.com/show/p1WZ777K
0

相关试题推荐
最新回复(0)