|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data
data segment
db '1975','1976','1978','1979','1980','1981','1982', '1983', '1984', '1985' ;0-39
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479 ;40-79
dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778 ;80-99
data ends
table segment
db 10 dup ('yesr summ ne ?? ')
;1975 16 / 3 = 5
;用以上格式存放三段数据并计算结果储存
table ends
stack segment
dw 16 (0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,10H
sub bx,bx
sub bp,bp
mov cx,10
s: push cx
sub si,si
mov cx,4 ;将data前二段的四个字节的数据以单个字节储存到table段的格式中
s0: mov al,byte ptr ds:[bp+si] ;bp为每个双字节的基址。si以bp为基址偏移到每个字节
mov es:[bx+si],al ;bx指向table段中的每一段的基址
mov al,byte ptr ds:[bp+40+si]
mov es:[bx+si+5],al
inc si
loop s0
add bp,4
pop cx
add bx,16
loop s
sub bx,bx
sub ax,ax
sub dx,dx
sub si,si
mov cx,10
;将data后一段的数据复制到table段的格式中并计算
s1: mov dx,word ptr ds:[si+80] ;'80'为基址每二个字节为偏移
mov word ptr es:[bx+10],dx
mov ax,es:[bx+5]
mov dx,es:[bx+7]
div word ptr es:[bx+10]
mov es:[bx+13],ax
add si,2
add bx,16
loop s1
mov ax,4c00h
int 21h
code ends
end start
debug可以运行并看到数据正常
不知道有没有语法的不正确大家帮忙看看
|
|