dseg segment
new1 db 'newsA',0dh,0ah,'$';忘记在0d,0a后加h,因为编译器不认识
new2 db 'newsB',0dh,0ah,'$';忘记在0DH之前加逗号隔开;导致程序运行错误;
new3 db 'newsC',0dh,0ah,'$'
new4 db 'newsD',0dh,0ah,'$'
new5 db 'newsE',0dh,0ah,'$'
new6 db 'newsF',0dh,0ah,'$'
new7 db 'newsG',0dh,0ah,'$'
new8 db 'newsH',0dh,0ah,'$'
new9 db 'newsI',0dh,0ah,'$'
new10 db 'newsJ',0dh,0ah,'$'
news dw new1,new2,new3,new4,new5,new6,new7,new8,new9,new10
dseg ends
cseg segment;代码段开始声明
main proc far;main函数声明
assume cs:cseg,ds:dseg;声明代码段与数据段
start:push ds;保存old ds register value
sub ax,ax
push ax;the same way to ds
mov ax,dseg
mov ds,ax
begin:
mov cx,10
lea bx,news;将NEWS偏移地址给BX寄存器
disp:
mov dx,[bx];根据[BX]偏移地址找到对应的菜单项目,所谓跳转表法
add bx,2;忘记写这个语句,因为news是以字存放所以加2个byte
mov ah,09h;dos显示字符串09h功能
int 21h
loop disp;直到cx等于0
jmp begin
main endp;先写main结束
cseg ends;后写cseg结束
end start;最后start结束