注册 登录
编程论坛 汇编论坛

8章 实验7 没写完 帮看看

e0a 发布于 2014-02-26 20:11, 673 次点击
实在写不下去了
程序代码:
assume cs:code,ds:data,ss:stack
;------------------------stack
stack segment
db 16 dup (0)
stack ends
;------------------------data
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
dd '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

;-----------------------ES
table segment
db 21 dup ('year summ ne ?? ')
table ends

;-----------------------code
code segment
start:mov ax,data
;段寄存器初始化
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,16
;寄存器清零
mov ax,0
mov bx,0
mov di,0
mov si,0
mov dx,0
mov cx,20
;
s20: push cx       ;13入栈
mov cx,4
s1:mov al,ds:[bx+si]
mov es:[bx],al
inc bx
loop s1

;bx=3
mov cx,4
mov ax,0         

push bx
mov bx,0

push bx            

s2:mov al,[bx+si+84]
pop bx;
mov es:[bx+2],al
inc bx
loop s2
;bx=8
mov cx,2
s3:mov al,[bx+2]
mov es:[bx+2],al
inc bx
loop s3
;bx=b
pop dh
pop dl  ;dx 高16位
pop ah

pop al  ;ax 低16位
sub bx
div es:[bx]
;bx=a
;
ax存余数
add bx,3
;bx=d
mov es:[bx],ax

pop cx
loop s20

mov ax,4100h
int 21h
code ends
end start
4 回复
#2
wp2319572014-02-26 21:32
边写边调试  我觉得挺好的
一次性把代码全写完  然后一起调试  不好   有些想当然的代码未必正确
#3
e0a2014-02-28 01:32
改后 网吧不能调试
程序代码:
assume cs:code,ds:data,ss:stack

stack segment
db 16 dup (0)
stack ends

data segment
db 21 dup ('1946')
dd 21 dup ('2000')
dw 21 dup ('20')
data ends

table segment
db 21 dup ('year summ ne ??')
table ends

code segment
start:
;寄存器初始化
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,16

;寄存器清零
mov ax,0
mov bx,0                ;
mov cx,20
mov dx,0                ;薪水
mov si,0                ;table
mov di,0                ;人数
mov bp,0                ;

s20:

push cx
mov cx,2

year:

mov ax,[bx]
mov es:[si],ax
add bx,2
add si,2
loop year

add bx,2
mov cx,2
add si,3

money:

mov ax,[dx+84]
push ax
mov es:[si],ax
add dx,2                ;dx=4
add si,2
loop money

add si,3

mov ax,[di+84+84]       ;di=0
mov es:[si],ax          ;si=AH

pop dx
pop ax
div es:[di+84+84]
mov es:[si],ax
add si,6                ;si=DH

pop cx
loop s20

mov ax,4c00h
int 21h
code ends
end start




 

[ 本帖最后由 e0a 于 2014-2-28 01:35 编辑 ]
#4
zhc6372014-03-08 11:22
高手啊。。。。。学习以下
#5
ck3290542222014-04-13 20:41
我刚做完实验九,试着编程在屏幕上显示一部分做验证,很蛋疼
1