实验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
这代码有什么问题吗?
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 mov bx,0而不是16 还有把sub改成add试试
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个数据逆序存放 如果是SUB BX,2的话,BX英该指向32.因为你这里有16个字形数据,一个字形数据等于两个字节。所以BX应该偏移到32 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 可以复制不过 到最后第三次就错误。。。
页:
[1]