汇编的一个问题。将Data1单元开始的0~15个数送到Data2单元开始的数据区中
汇编里的一个问题,将内存DATA1单元开始的0~15共16个数传送到DATA2单元开始的数据中。我的程序如下,但执行出来的是一串乱码,求高手指导。
DATA SEGMENT
DATA1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
DATA2 DB 10H DUP(?)
DATA ENDS
;**************************************
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
;***************************************
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV BX,DATA
MOV DS,BX
MOV ES,BX
MOV AL,0
MOV CX,16
NEXT: MOV [SI],AL
INC AL
INC SI
LOOP NEXT
MOV SI,OFFSET DATA1
MOV DI,OFFSET DATA2
MOV CX,16
REP MOVSB
RET
START ENDP
CODE ENDS
END START
追问:那你的输出结果是什么?
答案:DATA SEGMENT
DATA1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
DATA2 DB 10H DUP(?)
DATA ENDS
;**************************************
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
;***************************************
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV BX,DATA
MOV DS,BX
MOV ES,BX
MOV SI,OFFSET DATA1
MOV DI,OFFSET DATA2
MOV CX,16
REP MOVSB
RET
CODE ENDS
END START
运行后没有错误 ,你的乱码是怎么回事?另外
MOV AL,0
MOV CX,16
NEXT: MOV [SI],AL
INC AL
INC SI
LOOP NEXT
是做什么用的?
上一个:51单片机汇编语言把ASCII码转换为压缩BCD码
下一个:求牛人把这行机器码【0x1F9F0001】翻译成ARM的汇编指令