- [msc] assume cs:codesg,ds:data,es:table data seg 01/12 17:07
- [mouse] 答案见附注3 汇编编译器对jmp指令的相关处理 12/01 16:54
- [lghstock] 4是退出,0~3是功能4不涉及中断! 08/15 19:32
- [lghstock] 你的中断例,参考以下我的,看看是不是程序的入口和标号的默认问题!! 08/15 19:31
- [lghstock] 正在完成17的任务 08/15 19:29
- [lghstock] 你的中断出问题了,我第一次调也是! 08/15 19:27
- [游客] dingyixia 08/14 22:53
- [app] 程序有些问题,当第一次运行时,只有4可以运行,之后再运行,无法输入数字选项。 08/14 22:53
- [app] 快学完了,坚持到底! 08/14 22:46
- [tomato] 不错! 08/10 20:58
[2008-07-15 20:02] 第八章 实验7 作业
assume cs:code,ss:stack,ds:data
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
stack segment
db 16 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov bp,0
mov cx,21
s:push cx
mov si,0
mov di,0
mov cx,2
s1:mov ax,[bx+si]
mov word ptr es:[bp+di],ax
add si,2
add di,2
loop s1
add bx,4
add bp,16
pop cx
loop s
mov bx,0
mov bp,0
mov cx,21
s00:push cx
mov si,0
mov di,0
mov cx,2
s10:mov ax,[bx+si+84]
mov word ptr es:[bp+di+5],ax
add si,2
add di,2
loop s10
add bx,4
add bp,16
pop cx
loop s00
mov bx,0
mov bp,0
mov cx,21
s100:mov ax,[bx+168]
mov word ptr es:[bp+10],ax
add bx,2
add bp,16
loop s100
mov bx,0
mov cx,21
s200:mov ax,es:[5+bx]
mov dx,es:[7+bx]
div word ptr es:[10+bx]
mov es:[13+bx],ax
add bx,10h
loop s200
mov ax,4c00h
int 21h
code ends
end start
[ tomato 发表于 2008-07-16 08:59 ]
博主的思路是一列一列存储,很清晰。还有一种方式就是一行一行存储,博主也不妨试试。
[ lghstock 发表于 2008-07-20 21:44 ]
谢谢,我也试试!
[ msc 发表于 2023-01-12 17:07 ]
assume cs:codesg,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'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,45257,17800
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
codesg 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 al,[bx]
mov es:[di], al
mov al,[bx+1]
mov es:[di+1], al
mov al,[bx+2]
mov es:[di+2], al
mov al,[bx+3]
mov es:[di+3], al
mov ax,ds:[bx+54H]
mov dx,ds:[bx+56H]
mov es:[di+5H],ax
mov es:[di+7H],dx
mov ax,ds:[si+0A8H]
mov es:[di+0AH],ax
mov ax,ds:[bx+54H]
mov dx,ds:[bx+56H]
div word ptr ds:[si+0A8H]
mov es:[di+0DH],ax;
add bx,4
add si,2
add di,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start