Assembler:Problem 带有初始化变量
Assembler:Problem with initializing variable
我试着找出最大重复数。
尝试初始化变量时出现错误:
unknown opcode byte: Fh
Not supported yet. Not 8086 instruction.
这就是我的代码:
#make_COM#
ORG 100H
ARRAY DB 5,2,7,12,8,2,8,3,5,2,3,2,13,2
ARRAYcnt DW 13
ARRAYmax DW 0
MOV AH,0
MOV CX,ARRAYcnt
MOV BX,0
MOV AL,0
MOV DL,ARRAY[BX]
xor si,si
External:
push CX
MOV AH,0
MOV DL,ARRAY[BX]
MOV CX,ARRAYcnt
Internal:
CMP DL,ARRAY[si]
JE label1
continiue:
INC si
LOOP Internal
xor si,si
CMP AH,AL
JG label2:
continiue1:
pop CX
INC BX
LOOP External
HLT
label1:INC AH
JMP continiue
label2:MOV AL,AH
push BX
MOV BX,ARRAY[BX]
MOV ARRAYmax,BX
pop BX
JMP continiue1
之后是错误:ARRAYcnt DW 15
我把 DW 改成了 DB。
我也试过写 15 作为 0Fh.No 结果。
请帮忙
您遇到的问题是代码执行从位置 100h
开始,但您的程序有数据,而不是那里的代码。因此,处理器会尝试将您的数据作为代码执行,从而导致您观察到的问题。要解决此问题,请将您的数据移出执行路径,例如到节目结束。
我试着找出最大重复数。
尝试初始化变量时出现错误:
unknown opcode byte: Fh
Not supported yet. Not 8086 instruction.
这就是我的代码:
#make_COM#
ORG 100H
ARRAY DB 5,2,7,12,8,2,8,3,5,2,3,2,13,2
ARRAYcnt DW 13
ARRAYmax DW 0
MOV AH,0
MOV CX,ARRAYcnt
MOV BX,0
MOV AL,0
MOV DL,ARRAY[BX]
xor si,si
External:
push CX
MOV AH,0
MOV DL,ARRAY[BX]
MOV CX,ARRAYcnt
Internal:
CMP DL,ARRAY[si]
JE label1
continiue:
INC si
LOOP Internal
xor si,si
CMP AH,AL
JG label2:
continiue1:
pop CX
INC BX
LOOP External
HLT
label1:INC AH
JMP continiue
label2:MOV AL,AH
push BX
MOV BX,ARRAY[BX]
MOV ARRAYmax,BX
pop BX
JMP continiue1
之后是错误:ARRAYcnt DW 15
我把 DW 改成了 DB。
我也试过写 15 作为 0Fh.No 结果。
请帮忙
您遇到的问题是代码执行从位置 100h
开始,但您的程序有数据,而不是那里的代码。因此,处理器会尝试将您的数据作为代码执行,从而导致您观察到的问题。要解决此问题,请将您的数据移出执行路径,例如到节目结束。