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
...