当前位置: 代码迷 >> 汇编语言 >> 地址数组来显示内容应该如何做
  详细解决方案

地址数组来显示内容应该如何做

热度:6151   发布时间:2013-02-26 00:00:00.0
地址数组来显示内容应该怎么做?
data   segment  
new1   db   'newsa ',13,10, '$ '
new2   db   'newsb ',13,10, '$ '
new3   db   'newsc ',13,10, '$ '
news   dw   new1,new2,new3
data   ends
code   segment
main   proc   far
assume   cs:code,ds:data
start:
mov   ax,data
mov   ds,ax
mov   cx,3
;mov   bx,news
;mov   bx,ds
;mov ax,0
;mov   bx,ax
display:
mov   ah,9
lea   dx,[bx]
int   21h
call   SUB_DELAY
;mov   ah,4ch
jmp   judge
SUB_DELAY   PROC   NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSHF

MOV   AH,   2CH
INT   21H
INC   DH     ;系统秒数个数加1
MOV   BL,   DH
CMP   BL,   3CH     ;如果是60
JNE   SUB_TIMER
XOR   BL,   BL     ;BL置0

SUB_TIMER:
MOV AH,   2CH
INT 21H ;获取系统时间
CMP BL,   DH ;秒数十位置0,只比较个数
JE SUB_RET ;如果到了下一秒,则返回
JMP SUB_TIMER

SUB_RET:POPF
POP DX
POP CX
POP BX
POP AX
RET
SUB_DELAY ENDP
judge:
add   bx,8
dec   cx
cmp   cx,0
jnz   display
jz   exit
exit:
mov   ah,4ch
int   21h

main   endp
code   ends
end   start
我想用   news   地址数组来显示new1,new2,new3内容应该怎么做啊
这样是可以把new1   db   'newsa ',13,10, '$ '
new2   db   'newsb ',13,10, '$ '
new3   db   'newsc ',13,10, '$ '输出但是若把new1~new3内容换成其他字符长度不同的字符串则不能正常输出


------解决方案--------------------------------------------------------
....
mov bx, offset news
mov dx, bx[2] ; 0:new1 / 2:new2 / 4:new3
mov ah, 9
int 21h
...
  相关解决方案