汇编语言 实验七的小问题
程序代码:
assume cs:code,ds:data,es:table data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' ;year占4个bytes db '1993','1994','1995' ;0-53 0-53是54个字节。 dd 16,22,382,1356,2390,8000,16000,24486,50065,97497,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;收入占4个bytes 54-0A7 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226; 0A8-D2 dw 11542,14430,15257,17800 ;人数占2个 data ends table segment db 21 dup ('ssssssssssssssss') table ends code segment start: mov ax, data mov ds, ax mov ax, table mov es, ax mov bx, 0 mov si, 0 mov di, 0 mov cx, 21 ;初始循环次数 s: mov ax, ds:[bx] mov es:[si+0], ax mov ax, ds:[bx+2] mov es:[si+2], ax; bx每次增加4字节,si每次增加16字节 mov byte ptr es:[si+4], 20h ;;;;;;;;;;;;;;;;;;;;;;; 完成存储year 和 空格 mov ax, ds:54h[bx] mov es:[si+5], ax mov dx, ds:56h[bx] mov es:[si+7], dx mov byte ptr es:[si+9], 20h ;;;;;;;;;;;;;;;;;;;;; 完成存储 收入 和空格 mov di, ds:0A8h[si] ;这是问题-----> ;这不能用「si」,si每次循环加4,而人数是两个字节。如果改成这样的话 mov (这没有寄存器可用了), ds:0A8h[di] mov es:[si+10], di mov byte ptr es:[si+12], 20h ;;;;;;;;;;;;;;;;;;;;;;; 未完成存储 人数 div di mov es:[si+13], ax mov byte ptr es:[si+15], 20h ;;;;;;;;;;;;;;;;;;;;;;; 完成存储人均收入 add bx, 4 add si, 16 loop s mov ax, 4c00h int 21h code ends end start
[ 本帖最后由 admin_xyz 于 2012-8-29 10:18 编辑 ]