assume cs:codesg data segment dw 123,12666,1,8,3,38 data ends datasg segment db 10 dup(0) datasg ends stacksg segment db 16 dup(0) stacksg ends codesg segment start: mov bx,stacksg mov ss,bx mov sp,10h;设置ss:sp指向stacsg栈段 mov bx,data mov es,bx mov bx,0;设置es:[bx]指向我们将要处理的数据的data段 mov cx,6;因为要处理的数据为6,所以循环次数为6 mov dh,8;行号 mov dl,3;列号 ;我们在第九章的实验材料中知道显示的一行的偏移为0a0h mov al,0a0h dec dh;因为0a0h是第二行的开始,所以减去1后,即要在第八行显示,就要7*0a0h,不减的话就是在第九行显示了 mul dh;8行的偏移所以是7*0a0h mov di,ax;把上面乘积的值给我们使用的偏移地址的寄存器bx mov al,2;由于每个字符占用两个字节即一个字 mul dl;空出6个字节即三个字。从第四个字开始填充要显示的字符 add di,ax;这是计算出来的放第一个自发的起始地址 s: push bx;因为下面的程序中将要用到es、bx、cx,所以这里先把他们入栈保存起来 push es push cx ;这里是取数据并把此数据转化为对应的字符串 mov ax,es:[bx];去取data段的数据,这里bx是偏移量 mov d