包含14个常见的汇编程序源代码,所有代码在VC6.0中调试通过;汇编程序采用《微机原理接口与技术》(钱晓婕)一书中所用的框架。
目录
1. 编写程序,计算下面函数的值并输出。 (2)
2. 输入一个年份(调用readuid子程序),判断是否是闰年. (2)
3. 输入三个无符号整数(调用readuid子程序),判断并输出这三个数是否能构成一个三角形的三条边。若这三个数能构成一个三角形的三条边,输出三角形的形状:斜三角形、等腰三角形、等边三角形。 (3)
4. 采用无条件和条件转移指令构造while和do while循环结构,完成下面的求和任务并输出sum(sum 为双字)。 (5)
5. 编写程序,求0到100间所有偶数和并输出。要求采用loop、while和do while 三种不同的循环结构完成。 (6)
6. Fibonacci numbers的定义: (8)
f1=1,f2=1, fn= fn-1 + fn-2 n>=3 (8)
编程输出Fibonacci numbers的前30项。 (8)
7. 有一个首地址为array的20个有符号的双字数组,编程分别求出正数的和与负数的和并输出。 (10)
8. 有一个首地址为string的字符串,剔除string中所有的空格字符。请从字符串最后一个字符开始逐个向前判断、并进行处理。 (12)
9. 有一个首地址为string的字符串,分别统计string中空格、英文字母、数字和其它字符的个数并输出。 (13)
10. palindrome(回文)是指正读和反读都一样的数或文本。例如:11、121、12321等,编写程序,求10到10000之间所有回文数并输出。要求每行输出10个数。
15
11. 编写程序,求出所有满足勾股定理且边长不大于500的直角三角形。. 17
12. 编写一个求n!的子程序,利用它求1!+2! +3! +4! +5! +6! +7! +8! 的和并输出。
22
13. 编写一个判断闰年的子程序,利用它求出2010年到2060年之间所有的闰年并输出。 (25)
14. 编写一个求解双字型有符号数数组元素的平均值子程序,并验证它的正确性。26
1.编写程序,计算下面函数的值并输出。
include io32.inc
.code
start:
call readsid
cmp eax,0
jl small
cmp eax,10
jle mid
jmp large
small:
imul eax,2
jmp done
mid:
imul eax,3
jmp done
large:
imul eax,4
jmp done
done:
call dispsid
exit 0
end start
2.输入一个年份(调用readuid子程序),判断是否是闰年.
include io32.inc
.data
yes_msg byte 'is leap',13,10,0
no_msg byte 'no leap',13,10,0
.code
start:
call readuid
mov edx,0
mov ecx,4
div ecx
cmp edx,0
je first
jmp second
first:
mov edx,0
mov ecx,100
div ecx
jne leap
jmp second
second:
mov edx,0
mov ecx,400
div ecx
je leap
jmp noleap
leap:
mov eax,offset yes_msg
call dispmsg
jmp done
noleap:
mov eax,offset no_msg
call dispmsg
jmp done
done:
exit 0
end start
3.输入三个无符号整数(调用readuid子程序),判断并输出这三个数是否能
构成一个三角形的三条边。若这三个数能构成一个三角形的三条边,输出三角形的形状:斜三角形、等腰三角形、等边三角形。
include io32.inc
.data
msg_dengyao byte 'dengyao',13,10,0 ;等腰三角形
msg_dengbian byte 'dengbian',13,10,0 ;等边三角形
msg_zhijiao byte 'zhijiao',13,10,0 ;直角三角形
msg_xiesanjiao byte 'xiesanjiaoxing',13,10,0;斜三角形
msg_wrong byte 'wrong',13,10,0 ;无法构成三角形
sqr dword 0
.code
;在ebx,ecx,edx分别保存三条边的长度
start:
call readuid ;读取第一个数和第二个数到ebx、ecx
mov ebx,eax
call readuid
mov ecx,eax
cmp ebx,ecx ;确保ebx<=ecx
jg great
jmp next
great:
xchg ebx,ecx
next: ;读取第三个数到edx call readuid
mov edx,eax
cmp ebx,edx
jg thirdsmall ;如果第三个数最小
cmp ecx,edx
jg thirdmid ;如果第三个数在最中间
jmp order
;如果第三个数最小
thirdsmall:
mov eax,edx
mov edx,ecx
mov ecx,ebx
mov ebx,eax
jmp order
;如果第三个数在最中间
thirdmid:
xchg ecx,edx
jmp order
;执行至此,三个数(ebx,ecx,edx)已经从小到大排序
order:
mov eax,ebx
add eax,ecx
cmp eax,edx ;最小的两边之和大于第三边
jle wrong
cmp ebx,ecx
je b_equal_c ;第一条边等于第二条边
cmp ecx,edx
je c_equal_d ;第二条边等于第三条边
jmp general ;非等腰(等边)三角形
b_equal_c:
cmp ecx,edx ;继续比较,确认是否为等边三角形je dengbian
jmp dengyao
c_equal_d:
cmp ebx,ecx ;继续比较,确认是否为等边三角形
je dengbian
jmp dengyao
;执行至此,能否构成三角形,以及三角形是否等边等腰已经确定,输出
;判断是否为直角三角形
general:
mov eax,ebx
imul eax,eax
mov sqr,eax
mov eax,ecx
imul eax,eax
add sqr,eax
mov eax,edx
imul eax,eax
cmp sqr,eax
je zhijiao
jmp xiesanjiao
xiesanjiao:
mov eax,offset msg_xiesanjiao
call dispmsg
jmp last
zhijiao:
mov eax,offset msg_zhijiao
call dispmsg
jmp last
dengbian:
mov eax,offset msg_dengbian
call dispmsg
jmp last
dengyao:
mov eax,offset msg_dengyao
call dispmsg
jmp last
wrong:
mov eax,offset msg_wrong
call dispmsg
jmp last
;输出完毕,运行结束
last:
exit 0
end start
4.采用无条件和条件转移指令构造while和do while循环结构,完成下面
的求和任务并输出sum(sum 为双字)。
include io32.inc
.data
sum dword 0
.code
start:
call readuid
mov ecx,eax
getsum:
cmp ecx,0
je next
add sum,ecx
dec ecx
jmp getsum
next:
mov eax,sum
call dispuid
call dispcrlf
exit 0
end start
思考题:假设sum 为双字无符号整数,在和不溢出的情况下求出n的最大值;输出sum和n的值。
include io32.inc
.data
sum dword 0
.code
start:
mov ecx,1
getsum:
mov eax,sum ;备份sum的值
add sum,ecx
jc next ;进位的话跳出循环,此时的eax中保存最大sum,而ecx=n+1 inc ecx
jmp getsum
next:
call dispuid ;输出sum
call dispcrlf
dec ecx
mov eax,ecx ;输出n
call dispuid
call dispcrlf
exit 0
end start
5.编写程序,求0到100间所有偶数和并输出。要求采用loop、while
和do while 三种不同的循环结构完成。
●以下采用loop循环
include io32.inc
.code
start:
mov ecx,100
xor eax,eax
again:
add eax,ecx
dec ecx
loop again
call dispuid
exit 0
end start
;结果2550
●以下采用while循环
include io32.inc
.code
start:
mov ecx,100
xor eax,eax
again:
cmp ecx,0
jl done
add eax,ecx
sub ecx,2
jmp again
done:
call dispuid
exit 0
end start
;结果2550
●以下采用do while循环
include io32.inc
.code
start:
mov ecx,100
xor eax,eax
again:
add eax,ecx
sub ecx,2
cmp ecx,0
jl done
jmp again
done:
call dispuid
exit 0
end start
;结果2550
6.Fibonacci numbers的定义:
f1=1,f2=1, fn= fn-1 + fn-2 n>=3
编程输出Fibonacci numbers的前30项。
include io32.inc
.data
space byte ' ',0 ;输出空格
f1 dword 1 ;fn-1
f2 dword 1 ;fn-2
.code
start:
mov ecx,30
mov eax,f1 ;输出f1
call disp
dec ecx
mov eax,f2 ;输出f2
call disp
dec ecx
again:
mov eax,f1
add eax,f2 ;eax = fn-1 + fn-2
call disp
mov ebx,f2
mov f1,ebx ;fn-1 = fn-2
mov f2,eax ;fn-2 = eax
loop again
jmp done
disp proc
push eax ;保护寄存器eax
call dispuid
mov eax,offset space
call dispmsg
pop eax ;恢复寄存器eax
ret
disp endp
done:
exit 0
end start
;结果:
;1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 2 ;8657 46368 75025 121393 196418 317811 514229 832040 Press any key to continue
思考题:在不产生溢出的情况下n的最大值是多少?
include io32.inc
.data
space byte ' ',0 ;输出空格
maxn byte 'The Maximum n is ',0
f1 dword 1 ;fn-1
f2 dword 1 ;fn-2
.code
start:
xor ecx,ecx
mov eax,f1 ;输出f1
call disp
inc ecx
mov eax,f2 ;输出f2
call disp
inc ecx
again:
mov eax,f1
add eax,f2 ;eax = fn-1 + fn-2
jc done ;有进位时跳出
call disp
mov ebx,f2
mov f1,ebx ;fn-1 = fn-2
mov f2,eax ;fn-2 = eax
inc ecx
jmp again
disp proc ;输出过程
push eax
call dispuid
mov eax,offset space
call dispmsg
pop eax
ret
disp endp
done:
call dispcrlf
mov eax,offset maxn
call dispmsg
mov eax,ecx
call dispuid
call dispcrlf
exit 0
end start
;运行结果:
;1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 2
;8657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702
;887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 43 ;3494437 701408733 1134903170 1836311903 2971215073
;The Maximum n is 47
;Press any key to continue
7.有一个首地址为array的20个有符号的双字数组,编程分别求出正数的
和与负数的和并输出。
include io32.inc
.data
array dword -1, 2, 4, -8, 6,-4,-9, 8, 4, 0,
-49, 4,31,-68, 1,-4, 6, 5, 7, -51
sumofpos dword ? ;保存正数的和
sumofneg dword ? ;保存负数的和
.code
start:
mov ecx,lengthof array ;数组元素个数
xor edx,edx ;数组下标
again:
mov eax,array[edx*4] ;取出下标为edx的数组元素
inc edx
cmp eax,0
jg positive
jl negative
continue:
loop again
jmp done ;所有求和结束
positive:
add sumofpos,eax ;正数求和
jmp continue
negative:
add sumofneg,eax ;负数求和
jmp continue
done:
mov eax,sumofpos
call dispsid
call dispcrlf
mov eax,sumofneg
call dispsid
call dispcrlf
exit 0
end start
运行结果:
78
-194
思考题:将求和改为求最大值与最小值。
include io32.inc
.data
array dword -1,2, 4, -8, 6,-4,-9, 8, 4, 0,
-49, 4,31,-68, 1,-4, 6, 5, 7, -51
max dword ? ;最大值
min dword ? ;最小值
.code
start:
mov eax,array[0] ;为max和min赋初值
mov max,eax
mov min,eax
mov ecx,lengthof array ;数组元素个数
xor edx,edx ;数组下标
again:
mov eax,array[edx*4] ;取出下标为edx的数组元素inc edx
cmp eax,max
jg _max
cmp eax,min
jl _min
continue:
loop again
jmp done ;数组遍历结束
_max:
mov max,eax ;保存可能的最大值
jmp continue
_min:
mov min,eax ;保存可能的最小值
jmp continue
done:
mov eax,max
call dispsid
call dispcrlf
mov eax,min
call dispsid
call dispcrlf
exit 0
end start
运行结果:
31
-68
8.有一个首地址为string的字符串,剔除string中所有的空格字符。请从
字符串最后一个字符开始逐个向前判断、并进行处理。
include io32.inc
.data
string byte ' Let us have a try !',0 ;测试字符串
.code
start:
mov eax,offset string ;输出字符串
call dispmsg
call dispcrlf
mov esi,lengthof string ;esi为数组长度
dec esi ;esi指向最后一个元素
again:
mov al,string[esi]
cmp al,' '
jz reject ;剔除空格
dec esi
jl done ;循环结束
jmp again
reject:
mov ecx,esi ;ecx指向当前找到的空格
reject1: ;将后续字符依次往前移
mov al,string[ecx+1]
mov string[ecx],al
test al,al ;遇到\0结尾
jz again ;完成一个空格的剔除
inc ecx
jmp reject1 ;继续前移后一个字符
done:
mov eax,offset string
call dispmsg
call dispcrlf
exit 0
end start
;运行结果:
; Let us have a try !
;Letushaveatry!
9.有一个首地址为string的字符串,分别统计string中空格、英文字母、
数字和其它字符的个数并输出。
include io32.inc
.data
string byte 'Let us hava a try. 1,2,3,Go!',0 ;测试字符串
countofspace dword ? ;空格
countofletter dword ? ;英文字母
countofdigit dword ? ;数字
countofother dword ? ;其他
.code
start:
xor edx,edx ;字符数组下标
again:
mov al,string[edx]
cmp al,0 ;遇到\0结束
jz done
cmp al,' ' ;判断空格
jz space
cmp al,'a' ;初步判断为小写字母
jge letter_lower
continue_upper:
cmp al,'A' ;初步判断为大写字母
jge letter_upper
continue_digit:
cmp al,'0' ;初步判断为数字
jge digit0
continue_other: ;其他字符
inc countofother
continue: ;增加下标号,开始下一次循环inc edx
jmp again
space:
inc countofspace
jmp continue
letter_lower:
cmp al,'z' ;进一步判断是否为小写字母jle lower
jmp continue_upper ;继续判断是否大写字母lower: ;确定为小写字母inc countofletter
jmp continue
letter_upper:
cmp al,'Z' ;进一步判断是否为大写字母jle upper
jmp continue_digit ;继续判断是否为数字upper: ;确定为大写字母inc countofletter
jmp continue
digit0:
cmp al,'9' ;进一步判断是否数字
jle digit9
jmp continue_other ;只能是其他字符
digit9:
inc countofdigit
jmp continue
;依次输出空格数、英文字母数、数字、其他、
done:
mov eax,countofspace
call dispuid
call dispcrlf
mov eax,countofletter
call dispuid
call dispcrlf
mov eax,countofdigit
call dispuid
call dispcrlf
mov eax,countofother
call dispuid
call dispcrlf
exit 0
end start
;运行结果:
;5
;15
;3
;5
10.palindrome(回文)是指正读和反读都一样的数或文本。例如:11、121、
12321等,编写程序,求10到10000之间所有回文数并输出。要求每行输出10个数。
提示:采用div指令把整数分解为单个的数字,并将它们组合成一个新的整数。
include io32.inc
.data
string byte 0,0,0,0,0 ;保存转换后的字符串(逆序方式)
chushu dword 10 ;除数10,用于提取个位数字
back dword ? ;备份eax寄存器的值
count dword ? ;计算以输出的总数,用于每10个换行
.code
start:
mov eax,10 ;eax从10到10000
outlp:
mov ecx,0 ;ecx清零,用于记录字符串实际长度
mov back,eax ;备份eax寄存器的值
DigitToString: ;将数字转换成字符串
xor edx,edx ;被除数高32位清零
div chushu ;edx保存余数,eax保存商
add dl,30h
mov string[ecx],dl ;将数字的各位逆序放到string字符串
inc ecx
test eax,eax ;当商不为零时继续转换更高位的数字到字符串
jnz DigitToString
inlp:
dec ecx ;ecx为字符串最后一个字符的下标
mov ebx,0 ;ebx为字符串首个字符的下标
palindrome:
cmp ebx,ecx ;当ebx>=ecx时说明是回文数jge disp
continue:
mov dl,string[ebx]
cmp dl,string[ecx] ;比较首尾字符是否相等
jz inlp_next ;相等的话比较下一对字符
jmp outlp_next ;不是回文数
inlp_next:
inc ebx
dec ecx
jmp palindrome
outlp_next:
mov eax,back ;恢复寄存器
inc eax
cmp eax,10000
jg done
jmp outlp
disp: ;输出回文数
mov eax,back
call dispuid
mov al,' '
call dispc
inc count ;判断是否需要换行
mov eax,count
cmp eax,10
jz crlf
jmp outlp_next
crlf: ;换行
mov count,0
call dispcrlf
jmp outlp_next
done:
exit 0
end start
;运行结果:
;11 22 33 44 55 66 77 88 99 101
;111 121 131 141 151 161 171 181 191 202
;212 222 232 242 252 262 272 282 292 303
;313 323 333 343 353 363 373 383 393 404
;414 424 434 444 454 464 474 484 494 505
;515 525 535 545 555 565 575 585 595 606
;616 626 636 646 656 666 676 686 696 707
;717 727 737 747 757 767 777 787 797 808
;818 828 838 848 858 868 878 888 898 909
;919 929 939 949 959 969 979 989 999 1001
;1111 1221 1331 1441 1551 1661 1771 1881 1991 2002
;2112 2222 2332 2442 2552 2662 2772 2882 2992 3003
;3113 3223 3333 3443 3553 3663 3773 3883 3993 4004
;4114 4224 4334 4444 4554 4664 4774 4884 4994 5005
;5115 5225 5335 5445 5555 5665 5775 5885 5995 6006
;6116 6226 6336 6446 6556 6666 6776 6886 6996 7007
;7117 7227 7337 7447 7557 7667 7777 7887 7997 8008
;8118 8228 8338 8448 8558 8668 8778 8888 8998 9009
;9119 9229 9339 9449 9559 9669 9779 9889 9999 Press any key to continue
11.编写程序,求出所有满足勾股定理且边长不大于500的直角三角形。
提示:采用三重循环,用穷举法求解。
include io32.inc
.data
circum dword ?
ebx2 dword ? ;第一个数的平方
ecx2 dword ? ;第二个数的平方
esi2 dword ? ;第三个数的平方
count dword ? ;满足的三角形的总数
sep byte ' -> ',0 ;分隔符
.code
start:
first: ;第一层循环初始化
mov ebx,1
first2:
second: ;第二层循环初始化
mov ecx,1
second2:
third: ;第三层循环初始化
mov esi,1
third2:
mov eax,ebx ;边长是否大于500
add eax,ecx
add eax,esi
cmp eax,500
ja second_next
cmp ebx,ecx ;确保三边从小到大排序
jg third_next
cmp ecx,esi
jg third_next
mov eax,ebx ;计算平方和
mul ebx
mov ebx2,eax
mov eax,ecx
mul ecx
mov ecx2,eax
mov eax,esi
mul esi
mov esi2,eax
mov eax,ebx2
add eax,ecx2
cmp eax,esi2 ;满足勾股定理?
jz output
third_next:
inc esi
cmp esi,250 ;任意一条边都不超过250
jge second_next
jmp third2
second_next:
inc ecx
cmp ecx,250 ;任意一条边都不超过250
jge first_next
jmp second2
first_next:
inc ebx
cmp ebx,250 ;任意一条边都不超过250
jge done ;穷举结束
jmp first2
output:
inc count ;输出编号
mov eax,count
call dispuid
mov eax,offset sep ;输出分隔符
call dispmsg
mov eax,ebx ;输出满足勾股定理的3个数call dispuid
mov eax,' '
call dispc
mov eax,ecx
call dispuid
mov eax,' '
call dispc
mov eax,esi
call dispuid
mov eax,' '
call dispc
call dispcrlf
jmp third_next
done:
exit 0
end start
;运行结果:
;1 -> 3 4 5
;2 -> 5 12 13
;3 -> 6 8 10
;4 -> 7 24 25
;5 -> 8 15 17
;6 -> 9 12 15
;7 -> 9 40 41
;8 -> 10 24 26
;9 -> 11 60 61
;10 -> 12 16 20
;11 -> 12 35 37
;12 -> 13 84 85
;13 -> 14 48 50
;14 -> 15 20 25
;15 -> 15 36 39
;16 -> 15 112 113 ;17 -> 16 30 34
;18 -> 16 63 65
;19 -> 17 144 145 ;20 -> 18 24 30
;21 -> 18 80 82
;22 -> 19 180 181 ;23 -> 20 21 29
;24 -> 20 48 52
;25 -> 20 99 101
;26 -> 21 28 35
;27 -> 21 72 75
;28 -> 21 220 221 ;29 -> 22 120 122 ;30 -> 24 32 40
;31 -> 24 45 51 ;32 -> 24 70 74 ;33 -> 24 143 145 ;34 -> 25 60 65 ;35 -> 26 168 170 ;36 -> 27 36 45 ;37 -> 27 120 123 ;38 -> 28 45 53 ;39 -> 28 96 100 ;40 -> 28 195 197 ;41 -> 30 40 50 ;42 -> 30 72 78 ;43 -> 30 224 226 ;44 -> 32 60 68 ;45 -> 32 126 130 ;46 -> 33 44 55 ;47 -> 33 56 65 ;48 -> 33 180 183 ;49 -> 35 84 91 ;50 -> 35 120 125 ;51 -> 36 48 60 ;52 -> 36 77 85 ;53 -> 36 105 111 ;54 -> 36 160 164 ;55 -> 39 52 65 ;56 -> 39 80 89 ;57 -> 40 42 58 ;58 -> 40 75 85 ;59 -> 40 96 104 ;60 -> 40 198 202 ;61 -> 42 56 70 ;62 -> 42 144 150 ;63 -> 44 117 125 ;64 -> 45 60 75 ;65 -> 45 108 117 ;66 -> 45 200 205 ;67 -> 48 55 73 ;68 -> 48 64 80 ;69 -> 48 90 102 ;70 -> 48 140 148 ;71 -> 48 189 195 ;72 -> 49 168 175 ;73 -> 50 120 130 ;74 -> 51 68 85
1 2 #ifnfdgdfdef __CHEDGDFGCLID_A_ 3 #dedfgdffine __CHEGDFGCLID_A_ 4 5 /************************************************************************/ 6 /* 定义 */ 7 /************************************************************************/ 8 #defgdfgdfine FLADGDFGSH_SEDGDFGION 9 10 #defidgdne EDFGDFNS_ ADDGDFDESS_TEST #defidgdfne EDGDFGNS_ ADDEDGDGSS_TEST_3 11 12 13 #defdgdfine NDGDFGEED _CHECK 6 14 15 typdfgdfedef enum { 16 17 CA_ONEISDGDFGEMPTY, 18 CA_TWOISEDGDFGMPTY, 19 CA_TWOISFFDGDFGULL 20 }chedgdfckusdfdfm; 21 22 typedsfsdfef ssfsdftruct 23 { 24 TX_U8 desfdfsKey[9]; 25 TX_U8 desfsdfdsresult[9]; 26 TX_U64 crc64; 27 }DedgdfgsDatsfsdfdsa_f; 28 /************************************************************************/ 29 30 /* 函数声明 */ 31 /************************************************************************/ 32 TX_ ChesfsfckValid(checkenum checkcase); 33 TX_ ResfsdfadFlash(void); 34 TX_ ReadRanFromPanel(void); 35 TX_ ResfsdfadSerial(void); 36 TX_ ResfsdfadIPanel(void);
金家律师修订 本协议或合同的条款设置建立在特定项目的基础上,仅供参考。实践中,需要根据双方实际的合作方式、项目内容、权利义务等,修改或重新拟定条款。本文为Word格式,可直接使用、编辑或修改 软件著作权转让合同 转让人(甲方):__________________________________________ 法定代表人:_____________________________________________ 受让人(乙方):__________________________________________ 法定代表人:_____________________________________________ 甲、乙双方本着平等自愿、真诚合作的原则,经双方友好协商,依据《中华人民共和国知识产权法》和《计算机软件保护条例》以及其他有关法律、法规的规定,就甲方向乙方转让软件著作权及源代码事宜达成如下协议,以期共同遵守。 第一条作品的名称 甲方将其拥有所有权的软件著作权(以下简称“本著作权”)及源代码之全部知识产权利转让给乙方。 第二条转让的权利种类、地域范围 1.甲方向乙方转让以下全部地域范围内的与本著作权相关的所有权利; 2.地域范围:。 第三条转让价金、交付转让价金的日期 1.乙方为此向甲方支付转让费用共计(大写)元人民币,(小写)元人民币。 2.付款进度 a.乙方于软件著作权交付日向甲方支付元; b.从合同签订之日起一个月内向甲方支付元; c.从合同签订之日起三个月内向甲方支付元。 第四条支付价金的方式 乙方按下述方式付款:
a □现金支付; b □银行转帐; c □支票支付。 第五条甲方权利与义务 1.甲方应按本合同约定向乙方转让_______________软件产品、软件开发平台及全部的源代码等,并保证代码的完整性,可直接编译为应用程序正常使用。 2.自本合同签订之日起,甲方不得将本合同标的(即转让软件及源代码)转让或许可第三人使用;自乙方付款完毕之日起,乙方享有该转让软件及源代码的一切知识产权,甲方不得以任何形式使用、转让、传播该软件或源代码。 3.甲方向乙方提供《软件系统设计及使用说明书》及全部的相关文档。 4.甲方在合同签字后负责为乙方现场安装、调试系统开发平台,讲解各个功能的实现原理及方法,并当面解答乙方提出的全部问题。 5.甲方在本合同生效三个月内,负责为乙方解答开发过程中遇到的问题,并讲解开发思想及方法。 第六条乙方权利与义务 1.乙方负责支付本著作权及源代码的转让费人民币元(人民币大写:),并按本合同约定付款进度向甲方付款。 2.乙方有权对此软件或源代码做出任意修改,并有权自由处置该软件或源代码。 第七条违约责任 1.如任何一方违反本合同约定给对方造成损失,守约方均可以要求对方赔偿际损失金额。 2.如甲方侵害他人知识产权或违背现行各项法律或国家政策时,由甲方自行承担赔偿责任,与乙方无关;转让软件或源代码因此被有关机关扣留、没收,或禁止发行、使用的,甲方应赔偿乙方遭受的全部损失,并由甲方负责解决所有纠纷承担相关费用。 第八条保证条款 1.甲方保证拥有本产品的知识产权且不存在任何权利瑕疵。并且此转让行为不侵犯任何第三方的合法权益。若甲方违反本条内容,则甲方构成违约,乙方有权解除合同,并有权要求甲方赔偿损失。
C语言的常用库函数 函数1。absread()读磁盘绝对扇区函数 原形:int absread(int drive,int num,int sectnum,void *buf) 功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num 个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。 参数:drive=0对应A盘,drive=1对应B盘。 返回值:0:成功;-1:失败。 头文件:dos.h 函数2。abswrite()写磁盘绝对扇区函数 原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驱动器)、1(B驱动器)、 nsects=要写的扇区数(最多64K个); lsect=起始逻辑扇区号; buffer=要写入数据的内存起始地址。 功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。 返回值:0:成功;-1:失败。 头文件:dos.h 函数3。atof()将字符串转换成浮点数的函数 原形:double atof(const char *s) 功能:把s所指向的字符串转换成double类型。 s格式为:符号数字.数字E符号数字 返回值:字符串的转换值。 头文件:math.h、stdlib.h 函数4。atoi()将字符串转换成整型数的函数 原形:int atoi(const char *s) 功能:把s所指向的字符串转换成int类型。 s格式为:符号数字 返回值:字符串的转换值。若出错则返回0。 头文件:stdlib.h 函数5。atol()将字符串转换成长整型数的函数 原形:long atol(const char *s)
课前体验 Private Sub Form_Click() For i=1To10 For j=1To i Print"*"; Next j Print Next i End Sub 【例3-1】 Private Sub Form_Click() c1$=Chr$(13)+Chr$(10) msg1$="请输入您的名字:" msg2$="输入后按回车键" msg3$="或单击“确定”按钮" msg$=msg1$+c1$+msg2$+c1$+msg3$ name$=InputBox(msg$,"InputBox函数示例","张三") Print name$ End Sub 【例3-2】 Private Sub Form_Click() Msg1$=”Are you Continue to?” msg2$=”Operation Dialog Box” r=MsgBox(msg1$,34,msg2$) Print r End Sub 【例3-3】编写程序,用MsgBox函数判断是否继续执行。 Private Sub Form_Click() msg$="请确认此数据是否正确" Title$="数据检查对话框" x=MsgBox(msg$,19,Title$) If x=6Then Print x*x ElseIf x=7Then Print"请重新输入" End If End Sub 【例3-5】
Private Sub Form_Click() Print:Print FontName="隶书" FontSize=16 Print"姓名";Tab(8);"年龄";Tab(16);"职务"; Print Tab(24);"单位";Tab(32);"籍贯" Print Print"吴大明";Tab(8);25;Tab(16);"职员";Tab(24);"人事科"; Tab(32);"北京" End Sub 【例3-6】 Private Sub Form_Click() X=InputBox("请输入成绩","学生成绩录入","00") Print x End Sub 【例3-7】 Private Sub Form_Click() Dim x As Single,y As Single x=InputBox(“请输入x的值”) If x>0Then y=1ElseIf x=0Then y=0Else y=-1 Print“x=”;x,”y=”;y End Sub 【例3-8】 Private Sub Form_Click() Dim msg,UserInput msg="请输入一个字母或0~9之间的数字." UserInput=InputBox(msg)‘输入一个字母或数字If Not IsNumeric(UserInput)Then‘判断是否是数字 If Len(UserInput)=1Then‘不是数字时,判断输入的字符串长度是否为1 Select Case Asc(UserInput)‘判断输入字母的ASCII 码值 Case60To90'在60-90之间为大写字母 msg="你输入的是一个大写字母'" msg=msg&Chr(Asc(UserInput))&"'。" Case97To122'小写字母
计算机软件著作权登记-源代码范本 注意事项:常见的源代码包含:C语言,VB,C++,JAVA,.NET等。 提交的代码必须是源代码的开头载入程序,第30页必须断开,第60页是软 件的程序结尾,代码中不得出现与申请表内容不符合的日期,著作权人,软 件名字等,不能出现开源代码,不能出现任何版权纠纷。 格式要求:一、源代码应提交前、后各连续30页,不足60页的,应当全部提交。 二、源代码页眉应标注软件的名称和版本号,应当与申请表中名称完全一致,页 眉右上应标注页码,源代码每页不少于50行。 范例如下: #include
#include
1.硬币模拟试验 源代码: clear; clc; head_count=0; p1_hist= [0]; p2_hist= [0]; n = 1000; p1 = 0.3; p2=0.03; head = figure(1); rand('seed',sum(100*clock)); fori = 1:n tmp = rand(1); if(tmp<= p1) head_count = head_count + 1; end p1_hist (i) = head_count /i; end figure(head); subplot(2,1,1); plot(p1_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.3试验次数N与正面向上比率的函数图'); head_count=0; fori = 1:n tmp = rand(1); if(tmp<= p2) head_count = head_count + 1; end p2_hist (i) = head_count /i; end figure(head); subplot(2,1,2); plot(p2_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.03试验次数N与正面向上比率的函数图'); 实验结果:
2.不同次数的随机试验均值方差比较 源代码: clear ; clc; close; rand('seed',sum(100*clock)); Titles = ['n=5时' 'n=20时' 'n=25时' 'n=50时' 'n=100时']; Titlestr = cellstr(Titles); X_n_bar=[0]; %the samples of the X_n_bar X_n=[0]; %the samples of X_n N=[5,10,25,50,100]; j=1; num_X_n = 100; num_X_n_bar = 100; h_X_n_bar = figure(1);
软件著作权成功维权十 大案例之一 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-
2015软件着作权成功维权十大案例之一 临危受命,严密证据链让被告无处可逃 导读:一场历时一年多的“图像预处理”软件着作权之争终于在2015年09月17日下午谢幕。在本案一审审理中,在极为不利的情况下,长昊律师事务所临危受命、不负重望,最终喜得佳绩。我所律师以当事人的合法利益最大化为目标,在案件亲办过程中,克服重重困难,终于让被告受到了法律的制裁。本所回顾此案办理历程并就案件核心予以展述,一起共勉。 软件被盗,果断维权 2012年7月20日,张XX、陈XX将其共同享有的《XXX软件》(以下简称涉案侵权软件)转让给XH公司,并签订了《计算机软件着作权转让协议》。2012年12月1日,国家版权局出具证书号为软着登字第XX 号的《计算机软件着作权登记证书》,证书记载:着作权人为XH公司,开发完成日期为2009年9月9日,权利取得方式为受让,权利范围为全部权利。 被告人李XX注册成立深圳市HCRZ科技有限公司(以下简称HCRZ公司),在宝安区西乡黄田草围第一工业区租赁厂地生产摄像头,并未经原告XH公司授权在其生产的摄像头上安装XH公司所有的涉案侵权软件。 2014年05月30日10时,XH公司代表张XX向公安机关举报被告人李XX所有的HCRZ公司生产的摄像头软件侵犯其公司研发的软件着作权,2014年8月13日,公安机关在位于深圳市宝安区西乡黄田草围第一工业区HCRZ公司查获各类型摄像头5000多个,其中安装了涉案侵权软件的的HD-500T摄像头477个,查获电脑、烧录器等工具,并将被告人
1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度
【实例1-1】 using System; using System、Collections、Generic; using System、Text; namespace _ { class Program { static void Main(string[] args) { System、Console、Wriine("恭喜您,学会了C#编程!"); System、Console、ReadLine(); } } } 【实例1-2】 private void Form1_Load(object sender, EventArgs e) { this、Text="这就是一窗口!"; Label lbShow = new Label(); lbShow、Location = new Point(40,50); lbShow、AutoSize = true; lbShow、Text = "恭喜您学会编程了!"; this、Controls、Add(lbShow); int[] x, y; x = new int[5] { 1,2,3,4,5}; y = new int[5]; y = x; foreach (int a in y) { lbShow、Text += a、ToString(); } this、Controls、Add(lbShow); } 【实例2-1】 using System; using System、Windows、Forms; namespace TestEnum { public partial class TestEnum : Form { //Visual Studio 、Net自动生成得构造函数,后文示例将全部省略 public TestEnum() { Initializeponent(); } enum MyEnum { a = 101, b, c, d = 201, e, f }; //声明枚举型 private void TestEnum_Load(object sender, EventArgs e) { MyEnum x = MyEnum、f; //使用枚举型 MyEnum y = (MyEnum)202; string result ="枚举数x得值为"; result += (int)x; //将x转换为整数 result += "\n枚举数y代表枚举元素" + y; lblShow、Text = result; } }
合同编号:YT-FS-1709-17 软件著作权转让协议同范 本(完整版) Clarify Each Clause Under The Cooperation Framework, And Formulate It According To The Agreement Reached By The Parties Through Consensus, Which Is Legally Binding On The Parties. 互惠互利共同繁荣 Mutual Benefit And Common Prosperity
软件著作权转让协议同范本(完整 版) 备注:该合同书文本主要阐明合作框架下每个条款,并根据当事人一致协商达成协议,同时也明确各方的权利和义务,对当事人具有法律约束力而制定。文档可根据实际情况进行修改和使用。 合同(或合约)(covenants),是双方当事人基于对立合致的意思表示而成立的法律行为,为私法自治的主要表现,意指盖印合约中所包含的合法有效承诺或保证。本文是关于软件著作权转让协议同范本,仅供大家参考。 甲方:____ 乙方:____ 经甲乙双方协商一致,就《____》之软件著作权转让事宜达成本协议。 1.软件概况 软件的名称及版本号:____ 软件全称:____
软件简称:____ 软件版本:____ 2.甲方的权利和责任 自签订本协议之日起,甲方不再拥有该软件的著作权; 甲方必须向乙方提供该软件的全部源代码及其他相关文档; 甲方有义务向乙方提供该软件相关的技术支持; 甲方不得以任何方式向第三方透露与该软件相关的技术细节。 3.乙方的权利和责任 自签订本协议之日起,乙方拥有该软件的著作权; 乙方有义务在该软件上投入人力和物力,不断完善、升级该产品。 4.共同条款 甲方同意将该软件的著作权的各项权利无偿并且无地域限制地转让给乙方; 违反本协议第二条第3款、第4款之约定,甲方
软件著作权-源代码范本 注意事项:常见的源代码包含:C语言,VB,C++,JAVA,.NET等。 提交的代码必须是源代码的开头载入程序,第30页必须断开,第60页是软 件的程序结尾,代码中不得出现与申请表内容不符合的日期,著作权人,软件名 字等,不能出现开源代码,不能出现任何版权纠纷。 格式要求:一、源代码应提交前、后各连续30页,不足60页的,应当全部提交。 、源代码页眉应标注软件的名称和版本号,应当与申请表中名称完全一致,页 眉右上应标注页码,源代码每页不少于50行。 范例如下: #i nclude
#in elude
HTML语言源代码实例1.第一个HTML示例
3.强制不换行标签
案例一:“脸谱”引发著作权纠纷 中国艺术研究院赔偿4万 案情介绍: 《中国戏曲脸谱》一书使用了京剧脸谱绘画大师汪鑫福所绘的177幅京剧脸谱,汪鑫福的外孙季成将中国艺术研究院、九州出版社、北京世纪高教书店诉至法院。 汪鑫福自上世纪20年代起至90年代去世时陆 续创作了大量京剧脸谱,相当部分都收藏在艺术研究院陈列室中。上世纪50年代时,汪鑫福曾在艺术研究院前身戏曲改进局工作。2000年1月,经北京森淼圆文化传播有限公司组织联系,由艺术研究院提供图片及文字,九州出版社提供书号出版了中国戏曲脸谱》一书,该书中使用了汪鑫福绘制并收藏在陈列室中的177幅京剧脸谱,但没有为汪鑫福署名。 季成作为汪鑫福的外孙,自其母亲去世后即为“脸谱”的继承人。季成于2010年初发现《中国戏曲脸谱》一书,并于2010年8月从北京世纪高教书店购买到该书,故起诉要求 三被告停止侵权、向其赔礼道歉、赔偿经济损失53.1万元、精神损害抚慰金1万元及合理费用3万余元等。 法院审理 诉讼中,双方争议焦点主要集中在涉案脸谱的性质上,季成表示涉案脸谱为汪鑫福个人作品,而艺术研究院坚持认为涉案脸谱完成于上世纪50年代,为著作权归属于该研究院的职务作品。法院经审理认为,双方均认可汪鑫福一生绘制了大量京剧脸谱,而涉案脸谱没有专门标识或特征体现出绘制时间,故无证据证明涉案脸谱的时间完成时间。不排除部分涉案脸谱完成时我国尚未颁布实施著作权法,但汪鑫福去世以及《中国戏曲脸谱》一书出版时,我国已于1991年6月1日起施行著作权法,那么在使用他人作品时,就应当尊重法律规定的赋予著作权人的权利,除非有合法理由排除或限制著作权人权利。 我国著作权法规定了两类职务作品,一类是著作权由作者享有,但单位有权在其业务范围内优先使用,另一类是作者享有署名权,著作权的其他权利由单位享有。艺术研究院既表示涉案脸谱属于第二类职务作品,又表示著作权应当全部归属于艺术研究院。法院根据本案证据体现出的情况,认为汪鑫福所绘制的京剧脸谱不属于艺术研究院主张的主要利用了单位的物质技术条件创作,并由单位承担责任的第二类职务作品。况且,艺术研究院曾书面承认其享有涉案脸谱的所有权,汪鑫福的家属享有著作权。涉案脸谱属于美术作品,原件所有权的转移不视为作品著作权的转移。艺术研究院的矛盾解释混淆了作品原件所有权人与著 作权人所享有权利的区别,美术作品原件所有权人在享有作品原件所有权的同时,享有该作品著作权中的展览权,但不享有该作品的其他著作权,也不得损害著作权人所享有的其他著作权。 法院判决 艺术研究院未经季成许可亦未支付报酬,将涉案脸谱收录入《中国戏曲脸谱》中,九州出版社未尽到著作权审查义务出版《中国戏曲脸谱》一书的行为侵犯了季成因继承而取得的涉案脸谱的复制权等著作财产权。北京世纪书店销售的《中国戏曲脸谱》一书有合法来源,应当承担停止销售的责任。最后,北京海淀法院判决三被告停止侵权、中国艺术研究院和九州出版社赔偿季成经济损失35400元及合理费用1万元。宣判后,双方当事人均未明确表示是
The Legal Relationship Established By Parties To Resolve Disputes Ultimately Realizes Common Interests. The Document Has Legal Effect After Reaching An Agreement Through Consultation. 编订:XXXXXXXX 20XX年XX月XX日 计算机软件著作权转让合同范本标准版本
计算机软件著作权转让合同范本标 准版本 温馨提示:本合同文件应用在当事人双方(或多方)为解决或预防纠纷而确立的法律关系,最终实现共同的利益,文书经过协商而达成一致后,签署的文件具有法律效力。文档下载完成后可以直接编辑,请根据自己的需求进行套用。 甲方:_______________ 乙方:_______________ 经甲乙双方协商一致,就 《_______________》之软件著作权转让事宜达 成本协议。 1.软件概况 软件的名称及版本号:_______________ 软件全称:_______________ 软件简称:_______________ 软件版本:_______________ 2.甲方的权利和责任
自签订本协议之日起,甲方不再拥有该软件的著作权; 甲方必须向乙方提供该软件的全部源代码及其他相关文档; 甲方有义务向乙方提供该软件相关的技术支持; 甲方不得以任何方式向第三方透露与该软件相关的技术细节。 3.乙方的权利和责任 自签订本协议之日起,乙方拥有该软件的著作权; 乙方有义务在该软件上投入人力和物力,不断完善、升级该产品。 4.共同条款 甲方同意将该软件的著作权的各项权利无
**汽车商城管理系统源程序 using System; using System.Collections.Generic; using System.Text; namespace Qing.Model { ///
#region Model private int _article_id; private string _goods_no = string.Empty; private string _title = string.Empty; private string _spec_text = string.Empty; private string _img_url = string.Empty; private decimal _sell_price = 0M; private decimal _user_price = 0M; private int _quantity = 1; private int _stock_quantity = 0; ///