︵ゞ痴.想 发表于 2012-2-29 15:53:04

实验5 第六小题 求解

本帖最后由 ︵ゞ痴.想 于 2012-3-6 23:00 编辑

实验5 第六小题老是出错
ASSUME    CS:CODE         ASEGMENT
            DW      1,2,3,4,5,6,7,8,9,0AH,0BH,0CH,0DH,0EH,0FH,0FFH
         AENDS

         BSEGMENT
            DW      0,0,0,0,0,0,0,0
         BENDS

      CODESEGMENT
      START:MOV       AX,B
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,A
            MOV       DS,AX
            MOV       BX,16
            MOV       CX,8
          S:PUSH      DS:
            SUB       BX,2
            LOOP      S
            MOV       AX,4C00H
            INT       21H
      CODEENDS

            END       START


这代码有什么问题吗?



hxs554f 发表于 2012-2-29 15:53:05

ASSUME    CS:CODE         
         ASEGMENT
            DW      1,2,3,4,5,6,7,8,9,0AH,0BH,0CH,0DH,0EH,0FH,0FFH
         AENDS

         BSEGMENT
            DW      0,0,0,0,0,0,0,0
         BENDS

      CODESEGMENT
      START:MOV       AX,B
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,A
            MOV       DS,AX
            MOV       BX,14          ;从0开始,第8个字型数据的地址应为ds:
            MOV       CX,8
          S:PUSH      DS:
            SUB       BX,2
            LOOP      S
            MOV       AX,4C00H
            INT       21H
      CODEENDS

            END       START

苍海月明 发表于 2012-2-29 17:03:35

mov bx,0而不是16

苍海月明 发表于 2012-2-29 17:07:45

还有把sub改成add试试


莫名其妙 发表于 2012-2-29 18:00:56

mov ax,b

      mov ss,ax

      mov sp,10h

      mov ax,a

      mov ds,ax

      mov bx,0
      mov cx,8

s:      push ;从ds: 开始 进栈进入的是栈顶
      add bx,2

      loop s

      mov ax,4c00h

      int 21h

题目要求前8个数据逆序存放

尔陔·芣慬倳 发表于 2012-3-4 20:33:02

如果是SUB BX,2的话,BX英该指向32.因为你这里有16个字形数据,一个字形数据等于两个字节。所以BX应该偏移到32

n2zee 发表于 2012-3-5 00:02:08

ASSUME    CS:CODE         ASEGMENT
            DW      1,2,3,4,5,6,7,8,9,0AH,0BH,0CH,0DH,0EH,0FH,0FFH <------你这里定义的是字单元,所以一共有32个字节单元
         AENDS

         BSEGMENT
            DW      0,0,0,0,0,0,0,0
         BENDS

      CODESEGMENT
      START:MOV       AX,B
            MOV       SS,AX
            MOV       SP,16
            MOV       AX,A
            MOV       DS,AX
            MOV       BX,16   <--------------你这个起始地址是16所以是从09开始压栈,你把前面dw换成db就行了。
            MOV       CX,8
          S:PUSH      DS:
            SUB       BX,2
            LOOP      S
            MOV       AX,4C00H
            INT       21H
      CODEENDS

            END       START

︵ゞ痴.想 发表于 2012-3-6 22:46:18

可以复制不过 到最后第三次就错误。。。
页: [1]
查看完整版本: 实验5 第六小题 求解