荣誉值:3
信誉值:0
注册日期:2007-08-07 13:15 |
今天是学汇编的第5天(中间空了2天做JAVA去了),已成功突破第10章,速度越来越慢了.附上实验10.1,10.2,10.3和课程设计1代码,多多指教~!
实验10.1
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
dw 6 dup (0)
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,12
mov dh,10
mov dl,6
mov cl,01110100b
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:push dx ;dh行号 dl列号 cl 颜色
push cx
push si
push ax
push di
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov di,ax
mov al,2
mul dl
add di,ax
mov dl,cl
mov ch,0
show_next:mov cl,[si]
jcxz show_end
mov al,[si]
mov es:[di],al
mov es:[di+1],dl
inc si
add di,2
jmp short show_next
show_end:pop di
pop ax
pop si
pop cx
pop dx
ret
code ends
end start
实验10.2
assume cs:code,ss:stack
stack segment
dw 8 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,16
mov ax,4240h
mov dx,0fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw:push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret
code ends
end start
实验10.3
assume cs:code,ds:data,ss:stack
data segment
dw 59542
data ends
data2 segment
db 10 dup (0)
data2 ends
stack segment
dw 12 dup (0)
stack ends
code segment
start:mov ax,data
mov es,ax
mov ax,data2
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,24
mov si,0
mov di,0
mov dh,2
mov dl,2
mov cl,01110100b
call dcot
call show_str
mov ax,4c00h
int 21h
dcot:push ax
push bx
push cx
push dx
push si
push di
mov ax,es:[di]
mov bx,0ah
mov ch,0
mov dx,0
dcot_next:mov dx,0
div bx
mov cx,ax
add dl,30h
push dx
inc si
jcxz dcot_end
jmp dcot_next
dcot_end:mov cx,si
sub si,si
n:pop ax
mov [si],al
inc si
loop n
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
show_str:push dx ;dh行号 dl列号 cl 颜色
push cx
push si
push ax
push di
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov di,ax
mov al,2
mul dl
add di,ax
mov dl,cl
mov ch,0
show_next:mov cl,[si]
jcxz show_end
mov al,[si]
mov es:[di],al
mov es:[di+1],dl
inc si
add di,2
jmp short show_next
show_end:pop di
pop ax
pop si
pop cx
pop dx
ret
code ends
end start
课程设计1
assume cs:code,ds:data,ss:stack
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 1152,14430,15257,17800
data ends
table segment
db 10 dup (0)
table ends
stack segment
dw 30 dup (0)
stack ends
code segment
start:mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov cx,21
mov bx,0
mov si,0
mov di,0
mov bp,0
mov ax,stack
mov ss,ax
mov sp,40
next:push cx
mov cx,4
mov di,0
add di,bx
s1:mov ax,[di]
mov es:[si],ax
add di,1
add si,1
loop s1
mov al,0
mov es:[si],al
mov dl,16
call adz
mov di,84
add di,bx
mov ax,[di]
mov dx,[di+2]
call far ptr dtoc
push dx
mov dl,24
call adz
mov di,168
add di,bp
mov cx,[di]
call dcot
mov dl,35
call adz
pop dx
div cx
mov [di],ax
call dcot
mov dl,45
call adz
add bx,4
add bp,2
pop cx
loop next
mov ax,4c00h
int 21h
adz:push cx
push dx
push bx
push es
push ax
mov ax,bx
mov bl,4
div bl
mov cl,01110100b
mov dh,al
mov si,0
call far ptr show_str
pop ax
pop bx
mov es,bx
pop bx
pop dx
pop cx
ret
dcot:push ax
push bx
push cx
push dx
push di
push si
mov ax,[di]
mov bx,0ah
mov ch,0
mov dx,0
;mov di,0
dcot_next:mov dx,0
div bx
mov cx,ax
add dl,30h
push dx
inc si
jcxz dcot_end
jmp dcot_next
dcot_end:mov cx,si
sub si,si
dcot_n:pop ax
mov es:[si],al
inc si
loop dcot_n
mov al,0
mov es:[si],al
pop si
pop di
pop dx
pop cx
pop bx
pop ax
ret
dtoc:push ax
push bx
push cx
push dx
push di
push si
mov ax,[di]
mov dx,[di+2]
;mov di,0
dtoc_next:mov cx,0ah
call divdw
mov bx,30h
add cx,bx
push cx
inc si
mov bx,ax
add bx,dx
mov cx,bx
jcxz dtoc_end
jmp short dtoc_next
dtoc_end:mov cx,si
sub si,si
dtoc_n:pop ax
mov es:[si],al
inc si
loop dtoc_n
mov al,0
mov es:[si],al
pop si
pop di
pop dx
pop cx
pop bx
pop ax
retf
divdw:push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret
show_str:push dx ;dh行号 dl列号 cl 颜色
push cx
push si
push ax
push di
push ds
mov ax,table
mov ds,ax
mov ax,0b800h
mov es,ax
mov al,160
mul dh
mov di,ax
mov al,2
mul dl
add di,ax
mov dl,cl
mov ch,0
show_next:mov cl,[si]
jcxz show_end
mov al,[si]
mov es:[di],al
mov es:[di+1],dl
inc si
add di,2
jmp short show_next
show_end:pop di
mov ds,di
pop di
pop ax
pop si
pop cx
pop dx
retf
code ends
end start | | |