第一篇:程序实验举例及总结
一、实验内容
1.在屏幕上显示一个字符的源程序:
DATAS SEGMENT STRING DB
'HELLO!','$'
ORG
100H DATAS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H CODES ENDS
END START
2.编写一个程序,实现字符串的复制功能,并且将复制的字符串显示出来
DATAS SEGMENT
STRING_A DB
'ICH LIEBE DICH','$'
COUNT EQU $-OFFSET STRING_A DATAS ENDS
STACKS SEGMENT STRING_B DB COUNT DUP(?)STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV ES,AX
LEA SI,STRING_A
LEA DI,STRING_B
MOV CX,COUNT
STD
REP MOVSB
LEA DX,STRING_B
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
MOV AH,4CH
INT 21H CODES ENDS END START
3、利用中断调用,在屏幕上显示1—9 之间随机数。中断号86H
DATAS SEGMENT
CLA DB 13,10,'WE ARE GOING TO PRODUCE A NUMBER AT RANDOM:$:'
INFON DB 0DH,0AH,'THE PROGRAM RUNS GOOD$'
DATAS ENDS
STACKS SEGMENT STACK
DB 200 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME DS:DATAS,SS:STACKS,CS:CODES
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,CLA
MOV AH,9
INT 21H
MOV AX,0
MOV ES,AX;
MOV BX,86H*4
CLI
MOV WORD PTR ES:[BX],OFFSET RAN
MOV WORD PTR ES:[BX+2],SEG RAN
STI
INT 86H
MOV AH,02H
INT 21H
LEA DX,INFON
MOV AH,9
INT 21H
MOV AX,4C00H
INT 21H
RAN PROC
PUSH CX
PUSH DX
MOV AH,0
INT 1AH
MOV AX,DX
XOR DX,DX
MOV BX,10
DIV BX
ADD DL,30H
MOV AH,02H
INT 21H
POP DX
POP CX
IRET
RAN ENDP CODES ENDS END START
4.复制字符串,并倒序输出
DATAS SEGMENT
STRING_A DB 'still here',13,10,'$'
STRING_L DB '$' DATAS ENDS
STACKS SEGMENT
STRING_B DB 100 DUP(?)STACKS ENDS
CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX
MOV AX,STACKS MOV SS,AX
LEA SI,STRING_L MOV AX,SI LEA SI,STRING_A
LEA DI,STRING_B SUB AX,SI SUB AX,3
MOV CX,AX MOV BX,AX
STD
REP MOVSB
LEA DX,STRING_B
MOV AH,9
INT 21H MOV DL,13 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 INT 21H
LEA SI,STRING_B MOV CX,BX ADD SI,BX DEC SI S: MOV DL,[SI] MOV AH,2
INT 21H DEC SI
LOOP S
MOV AH,004CH
INT 21H CODES ENDS END START
5、显示比较两个数的大小
DATA SEGMENT A DB
33H B DB
87H DATA ENDS STACK SEGMENT
DW
DUP(?)STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA MOV DS,AX MOV AL,'A' CMP B,AL JA BGA MOV DL,'A' MOV BL,'B' JMP DISP BGA: MOV DL,'B'
MOV BL,'A' DISP:
MOV AH,2 INT 21H MOV DL,'>' INT 21H MOV DL,BL INT 21H MOV AH,4CH INT 21H CODE ENDS END START
6、键盘输入10个学生的成绩,编写一个程序统计60-69分,70-79分,80-89分,90-99分及100分的人数,分别存放在Score6,Score7,Score8,Score9和Score10单元中。输入10个学生的成绩如下:65 94 78 82 83 95 72 68 90 98 DATAS SEGMENT
INFON1 DB 13,10,'PLEASE INPUT THOSE SCORDS(YOU NEED NOT PRESS ENTER BETWEEN THEM):$'
INFON3 DB 13,10,'$'
INFON2 DB 13,10,'THE NUMBER OF SCORD6-SCORD10 IS:'
SCORD6 DB 30H
DB 32
SCORD7 DB 30H
DB 32
SCORD8 DB 30H
DB 32
SCORD9 DB 30H
DB 32
SCORD10 DB 30H
DB '$' DATAS ENDS
STACKS SEGMENT
DB 200 DUP(0)STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
MOV AH,9
LEA DX,INFON1
INT 21H
MOV AH,9
LEA DX,INFON3
INT 21H
MOV CX,10
S: MOV AH,1
INT 21H
CALL CAL
INT 21H
MOV AH,2
MOV DL,32INT 21H
LOOP S
MOV AH,9
LEA DX,INFON2
INT 21H
MOV AX,4C00H
INT 21H
CAL PROC
PUSH AX
CMP AL,36H
JZ G6
CMP AL,37H
JZ G7
CMP AL,38H
JZ G8
CMP AL,39H
JZ G9
CMP AL,31H
JZ G1 G6:
ADD [SCORD6],1
JMP WAN G7:
ADD [SCORD7],1
JMP WAN G8:
ADD [SCORD8],1
JMP WAN G9:
ADD [SCORD9],1
JMP WAN G1: ADD [SCORD10],1
MOV AH,1
INT 21H WAN: POP AX RET CAL ENDP CODES ENDS END START
二、心得体会
指令助记符决定了指令的功能,对应一条二进制编码的机器指令。指令的操作数个数由该指令确定,可以没有操作数,也可以有一个或多个操作数,大多数指令要显示写出来,还有些操作数是隐含的。当指令包含操作数的时候,书写时必须遵守:
1、指令助记符和操作数之间有分隔符,比如几个空格;
2、如果含有多个操作数,操作数之间用逗号分隔。
现在简单总结汇编语言指令的分类:
1、数据传送指令;
2、标志位操作指令;3、算术运算指令;
4、逻辑运算指令;
5、移位运算指令;
6、位操作指令;
7、比较运算指令;
8、循环指令;
9、转移指令;
10、条件设置字节指令;
11、串操作指令;
12、BCD码运算调整指令;
13、处理器指令。
在编写汇编程序时,应该注意特别容易出现的错误,例如在编写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数,offset后只能跟简单地址符号,等等。
汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。
汇编语言中的程序结构,子程序等知识也会帮助我们编写出一个更加完善的汇编程序。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。这里要对子程序和宏汇编加以区分,我的理解是:子程序是调用,而宏是替换
四周的学习很短,但是也很充实,有电磁场有信号有高频,但是天天抱着电脑写的是汇编,看的书也是汇编语言,其实很幸运能有机会学一些底层的东西,老师的教学很细致认真,没有老师的督促,学习的效果肯定不尽人意。
第二篇:Linux常用命令总结以及举例
Linux常用命令总结以及举例(2008-06-24 21:24:39)标签:linux 命令 应用 it
1.$ uname-a
分类:Linux
Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown 在这里我们从左向右看到常规的系统信息。每条信息都有自己的选项(在下面的圆括号中),可以单独显示:
操作系统名称为 Linux(-s)。本机的网络节点名为 linux(-n)。操作系统发布版本为 4.5.18-4GB(-r)。
操作系统版本为 #1 Wed Mar 27 13:57:05 UTC 2002(-v)。机器类型为 i686(-m)。这里的处理器类型(-p)为未知。2.stty 显示关于您的终端设置的信息:
$ stty-a speed 38400 baud;rows 40;columns 103;line = 0;intr = ^C;quit = ^;erase = ^?;kill = ^U;eof = ^D;eol =;eol2 =;start = ^Q;stop = ^S;susp = ^Z;rprnt = ^R;werase = ^W;lnext = ^V;flush = ^O;min = 1;time = 0;-parenb-parodd cs8-hupcl-cstopb cread-clocal-crtscts-ignbrk-brkint-ignpar-parmrk-inpck-istrip-inlcr-igncr icrnl ixon-ixoff-iuclc-ixany-imaxbel opost-olcuc-ocrnl onlcr-onocr-onlret-ofill-ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok-echonl-noflsh-xcase-tostop-echoprt echoctl echoke 第二行和第三行显示了将在命令行分别调用的特殊字符和键序列。例如,“^Z” 即 CNTRL-Z 在本系统中发送一个终端休止符。退出符号以 “^” 即 CNTRL-发送,而我们可以将其改为 “^X”,如下所示:
$ stty quit ^X 在这种情况下,您实际要输入 ^ 符号,而不是 CNTRL 键。这种改变只在当前窗口中起效。为了使这种改变永久生效,需要在您的.bashrc 文件中输入该语句。
3.Diff 比较两个文件。它返回那些导致文件不同的行,并返回关于如何使文件变得相同的一些含义隐晦的输出:
$ diff test.out test2.out 0a1 > Another test.在这里我们被告知,需要将 “Another test.” 这一行添加到 test.out,以便使它与 test2.out 相似。第一个字符 “0” 是要在 test.out 中编辑的行号; “a” 表示该行应该被添加到 test.out,以便与 test2.out 的第一行 “1” 相匹配。如果我们需要更改 test.out,则第二个字符也可以是 “c”,而如果我们需要从 test.out 中删除一些内容,则第二个字符是 “d”。
您可能希望使一个文件与另一个文件相似,以便为某些代码提供补丁。diff 还经常作为分析工具,用于验证程序或脚本 — 例如 sed 脚本 — 的输出是否是所预期的输出。4.date 命令可用于显示或设置日期。如果用户具有超级用户权限,则他或她可以通过在以下命令中提供一个数字型字符串来设置日期:
$ date 0101010004 此命令将日期设置为 2004 年(04)1 月 1 日(0101)凌晨 1 时(0100)。但是,任何用户可以用所需的格式来显示日期。注意在格式序列之前需要一个加号 “+”。如果没有出现此命令的预期输出,则尝试将它包含在单引号中:
$ date +'%H%M%S' 204748 您可以在序列中包含空格,这时您需要使用双引号: $ date +“%H %M %S” 20 47 51 在日期的主页上列有三十多种不同的格式序列,这些序列可以按需要结合起来,以获得您最后的输出格式。
date 的输出还可以用于脚本中,如: $ date-d '2 day' Thu Jan 29 19:02:02 EST 2004-d 选项指示 date 显示其后字符串中所描述的时间。在上例中,我们要求显示从现在起(2004 年 1 月 27 日)两天后的日期。我们也可以要求显示三天前的日期,其命令为:
$ date-d '-3 day' Sun Jan 25 20:56:59 EST 2004 date 多种功能的另一个示例是能够向其输出附加字符串,为生成唯一的文件名提供了一种便利的方法。
$ ls-l | cat > $(date +ls_%d%b%y%H%M.out)$ ls ls_*.out ls_04Feb041633.out 在这里,我们将一个长文件列表的输出传送给 cat,它将我们的输出再传送到一个名为 ls_04Feb041609.out 的文件。注意我们为文件名使用了一个变量,由美元符号 “$” 表示。依次将 “ls_” 和 “.out” 附加到日期,其格式为月份中的日(%d)、本地的月份名称缩写(%b)、年份的最后两位数字(%y)、小时(%H)和分钟(%M),从而产生此文件名。5.Sort 列可以用两种不同的格式指定。如果使用-k 选项,则列的位置从 1 开始进行编号。您还可以使用 +POS1 格式,从第一列编号为零开始进行列的编号。以下两个命令产生相同的输出:
$ ls-l *.out | sort +5-7 $ ls-l *.out | sort-k 6,8-rw-r--r--1 bluher users 375 Dec 5 2002 fdisk.out-rw-r--r--1 bluher users 2447 Dec 28 20:15 ls.out-rw-r--r--1 bluher users 590 Jan 4 21:24 greps.out-rw-r--r--1 bluher users 78 Jan 4 21:25 sgrep.out...在默认情况下,sort 命令的列分隔符是空格和制表符。可以使用-t SEP 选项指定其他分隔符,其中 SEP 是您指定的分隔符号。sort 的默认顺序是从最低到最高,利用-r 选项可以将顺序颠倒。
Sort 可用于很多不同的任务。例如,它可用于对文件输出进行排序(如
/etc/passwd),或者如我们在下面所看到的那样,对 du 的输出进行排序。当使用-m 选项时,sort 将文件合并,实际上并没有对它们进行排序。但是,如果您希望将它们排序,就应该在文件合并前对它们排序。
Sort 经常与 uniq 命令一起使用,从已排序的文件中删除完全相同的行。uniq 命令在管道中经常跟在 sort 命令的后面,还可以使用-c 选项来计算某一行所出现的次数,或者使用-d 选项,只报告完全相同的行:
$ sort-m test.out test2_sort.out | uniq-c 1 Another test.1 Testing testing 2 This is a test.在这里我们合并两个文件 test.out 和 test2_sort.out。然后我们使用-c 选项,将输出传送到 uniq,这样最后的结果是按字母顺序排列的列表,完全相同的行被删除,并带有一个关于每行出现频率的报告。6.打印机控制 在多数情况下,打印机命令的使用相对较为明确。通过在 lpr 命令后面指定文件名,将作业发送到打印机。如果没有提供文件名,则假定使用标准输入。使用 lpq 命令,您可以获得关于发送到打印机的作业的状态报告。当您指定作业号时,Lprm 将作业从行打印机后台打印队列中删除。
$ lpr grep2.out $ lpq Printer:lp@linux 'lpdfilter drv=upp method=auto color=yes' Queue:1 printable job Server:pid 1929 active Unspooler:pid 1930 active Status:waiting for subserver to exit at 21:24:14.637 Rank Owner/ID Class Job Files Size Time active bluher@linux+928 A 928 grep2.out 779 21:24:14 done bluher A 877(STDIN)117258 13:09:53 $ lprm 928 Printer lp@linux: checking perms 'cfA928linux.local' dequeued 'cfA928linux.local' 在这里,当我们将作业发送到打印机后,我们查询其状态。Lpq 向我们显示编号为 877 的作业已经完成,而我们刚发送的作业编号为 928。我们使用命令 lprm 928 将活动的作业从队列中删除。7.磁盘信息
无论您是维护自己的系统还是支持具有很多用户的企业,监视磁盘空间都是系统管理员更重要的职责之一。du、df 和 fdisk 命令提供了可用磁盘空间的不同视图。du 命令提供对每个目录的文件空间使用情况的评估。在默认情况下,测量的单位是块的数目,块的大小通常在安装您的系统时确定。
在以下的示例中,系统是使用 1024 字节的块安装的。如果没有指定目录,则 du 开始对当前目录进行计算。-h 选项以易于读懂的形式提供大小的值:
$ du-h Documents 105k Documents/jj 573k Documents/John 682k Documents 可以使用-a 选项更改输出,该选项指示 du 显示文件和目录的块数。选项--block-size=SIZE 指示 du 以 SIZE 所指定字节大小的块的数目来显示输出。
$ du--block-size=512 Documents 209 Documents/jj 1146 Documents/John 1363 Documents 在默认情况下,du 还为每个子目录递归地打印信息。通过使用 max-depth=N 选项可以限制这种操作,其中 N 等于被报告的最大级数:
$ du--max-depth=2.$ du--max-depth=2 | sort-n 4./.xemacs 4./public_html 105./Documents/jj 573./Documents/Ian 682./Documents 2420./jdevhome/system 8350./jdevhome/system9.0.3.1035 13483./jdevhome/mywork 24252./jdevhome...du 报告目录和子目录的空间使用情况,而 df 报告已安装文件系统的磁盘空间使用情况:
$ df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda6 4195632 1983656 2211976 48% / /dev/hda5 14607 3778 10075 28% /boot /dev/hda9 937372 494028 443344 53% /home /dev/hda8 6297248 3876880 2420368 62% /opt shmfs 256220 0 256220 0% /dev/shm 在这里,df 报告了五个文件系统的状态。与 du 类似,df 利用-h 选项提供人类可读的输出:
$ df-h Filesystem Size Used Avail Use% Mounted on /dev/hda6 4.0G 1.9G 2.1G 48% / /dev/hda5 14M 3.7M 9.8M 28% /boot /dev/hda9 915M 476M 440M 52% /home /dev/hda8 6.0G 3.7G 2.3G 62% /opt shmfs 250M 0 250M 0% /dev/shm df 命令还允许您利用-block-size=SIZE 选项来指定块的大小。
fdisk 命令是 Linux 的分区表操作命令。与 du 和 df 不同,没有 root 用户权限时不能运行该命令。如果指定了-l 选项,则可以将它仅用于报告的目的。它提供了您的整个分区表的完整视图,而不仅仅是您使用 df 所看到的扩展 Linux 分区:
# fdisk-l Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders Units = cylinders of 15120 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 1 286 2162128+ c Win95 FAT32(LBA)/dev/hda2 * 288 1940 12496680 5 Extended /dev/hda5 288 289 15088+ 83 Linux /dev/hda6 290 844 4195768+ 83 Linux /dev/hda7 845 983 1050808+ 82 Linux swap /dev/hda8 984 1816 6297448+ 83 Linux /dev/hda9 1817 1940 937408+ 83 Linux 8.进程监视
在繁忙的多用户系统中,进程监视也是 Linux 系统管理员的一项重要职责。在这方面,ps 和 top 是两个最有用的命令。
ps 命令提供了当前运行进程的快照。生动翔实的一课
以下是 ps 的最简单形式: $ ps PID TTY TIME CMD 3884 pts/1 00:00:00 bash 3955 pts/2 00:00:00 more 3956 pts/5 00:00:05 sqlplus PID 是进程的标识号。TTY 是进程所属的终端控制台。TIME 列是进程所使用的总的 CPU 时间。CMD 列列出正在执行的命令行。
使用带有-ef 选项的 ps,返回系统中所有用户的所有进程的完整列表。如果您将此 ps 命令的结果传送到 grep 中,则该结果更易于查看。例如:
$ ps-ef | grep oracle UID PID PPID C STIME TTY TIME CMD oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1 oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1 oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1 oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1 oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1 oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1 oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1 oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1 oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1 oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1 注意,当您将 ps 的输出传送到 grep 命令时,列标题并不象在 ps 命令本身所使用时那样正常地显示。为便于说明,标题位于输出的上方,以便清楚地显示其联系。
虽然 uid 通常是指数字型的标识,但在第一列下指定的是用户名,标记为 UID。PPID 是父进程的标识号。对于 Oracle 进程,这里的标识号为 1 — 它是 init 进程(所有进程的父进程)的 id,因为在本系统中安装的 Oracle 是作为登录进程的一部分而启动的。
标为 C 的列是由 CPU 用于计算执行优先级的因子。STIME 是指进程的启动时间。
问号表示这些进程不属于任何 TTY,因为它们是由系统启动的。
以下是 ps 命令带有某些不同选项的另一个示例。注意,其中很多列与执行带有-ef 选项的 ps 时的列相同:
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND bluh 4024 0.0 0.2 2240 1116 pts/1 S 20:59 0:00 su bluher bluh 4025 0.0 0.3 2856 1668 pts/1 S 20:59 0:00 bash bluh 4051 0.0 0.2 2488 1504 pts/1 R 21:01 0:00 ps aux bluh 4052 0.0 0.1 1636 600 pts/1 S 21:01 0:00 grep bluher 进程监视
在繁忙的多用户系统中,进程监视也是 Linux 系统管理员的一项重要职责。在这方面,ps 和 top 是两个最有用的命令。
ps 命令提供了当前运行进程的快照。生动翔实的一课
以下是 ps 的最简单形式: $ ps PID TTY TIME CMD 3884 pts/1 00:00:00 bash 3955 pts/2 00:00:00 more 3956 pts/5 00:00:05 sqlplus PID 是进程的标识号。TTY 是进程所属的终端控制台。TIME 列是进程所使用的总的 CPU 时间。CMD 列列出正在执行的命令行。
使用带有-ef 选项的 ps,返回系统中所有用户的所有进程的完整列表。如果您将此 ps 命令的结果传送到 grep 中,则该结果更易于查看。例如:
$ ps-ef | grep oracle UID PID PPID C STIME TTY TIME CMD oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1 oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1 oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1 oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1 oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1 oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1 oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1 oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1 oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1 oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1 注意,当您将 ps 的输出传送到 grep 命令时,列标题并不象在 ps 命令本身所使用时那样正常地显示。为便于说明,标题位于输出的上方,以便清楚地显示其联系。
虽然 uid 通常是指数字型的标识,但在第一列下指定的是用户名,标记为 UID。PPID 是父进程的标识号。对于 Oracle 进程,这里的标识号为 1 — 它是 init 进程(所有进程的父进程)的 id,因为在本系统中安装的 Oracle 是作为登录进程的一部分而启动的。
标为 C 的列是由 CPU 用于计算执行优先级的因子。STIME 是指进程的启动时间。
问号表示这些进程不属于任何 TTY,因为它们是由系统启动的。
以下是 ps 命令带有某些不同选项的另一个示例。注意,其中很多列与执行带有-ef 选项的 ps 时的列相同:
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND bluh 4024 0.0 0.2 2240 1116 pts/1 S 20:59 0:00 su bluher bluh 4025 0.0 0.3 2856 1668 pts/1 S 20:59 0:00 bash bluh 4051 0.0 0.2 2488 1504 pts/1 R 21:01 0:00 ps aux bluh 4052 0.0 0.1 1636 600 pts/1 S 21:01 0:00 grep bluher 除了提供重要的诊断信息,ps 命令还经常用于找出失控进程的 PID。例如,您的一个用户在 SQL*Plus 会话中输入一个笛卡尔联接。您可以执行以下的 ps 命令来找出其 PID :
$ ps-ef | grep bluher...bluher 4068 4064 0 21:14 pts/6 00:00:00 less bluher 4112 3945 0 21:28 pts/5 00:08:42 sqlplus...然后您可以使用以下命令将其终止: $ kill 4112 常规用户可以看到所有的系统进程,但他们只能终止他们自己拥有的进程。Ps 只为您提供当前进程的快照。要即时查看最活跃的进程,可使用 top。Top 实时地提供进程信息。它还拥有交互式的状态,允许用户输入命令,如 n 后面跟有 5 或 10 等数字。其结果是指示 top 显示 5 或 10 个最活跃的进程。Top 持续运行,直到您按 “q” 退出 top 为止。
以下是 top 的部分显示:
8:14pm up 51 min, 7 users, load average: 0.02, 0.03, 0.05 96 processes:87 sleeping, 2 running, 0 zombie, 7 stopped CPU states:6.4% user, 3.5% system, 0.0% nice, 89.9% idle Mem:512440K av, 392288K used, 120152K free, 0K shrd, 55668K buff Swap:1050800K av, 0K used, 1050800K free 236128K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 1289 root 18 0 78008 11M 1796 R 3.7 2.2 0:49 X 1965 bluher 20 0 12244 11M 10456 S 1.9 2.3 0:01 kdeinit 1986 bluher 18 0 996 996 768 R 1.5 0.1 0:00 top 1803 bluher 20 0 16960 16M 13508 S 0.9 3.3 0:03 kdeinit 1804 bluher 20 0 16964 16M 13508 S 0.9 3.3 0:03 kdeinit 1800 bluher 19 0 12260 11M 10076 S 0.1 2.3 0:04 kdeinit 1 root 20 0 220 220 188 S 0.0 0.0 0:04 init...关闭
看来应该以 shutdown 命令来结束本次讨论。与本文以及上一篇文章中所讨论的许多命令一样,通常有一种 GUI 形式的替代方法可以关闭您的系统。但是,当您需要手动关闭时,您可以使用以下命令立即进行关闭:
$ shutdown-h now 您可以使用以下命令手动地重新启动系统: $ shutdown-r now 注意这两个命令都需要指定时间。您可以指定 “now” 或使用带有时间秒数的-t 选项。
我们在这两篇文章中讨论了大量内容,但我们绝对无法涵盖 Linux 可能具有的全部内容。我们没有讨论的命令还有很多,而我们没有看到的命令选项则更多。但是,在这里我们希望您至少找到了开始管理 Linux 系统所需的最少限度的工具。
Sheryl Calish 是 Blue Heron Consulting 的一位专门研究 Linux 的 Oracle 开发人员。她还是 Central Florida Oracle Users Group 的基金主席和 IOUG Linux SIG 的销售主席。
第三篇:C语言实验程序、总结 实验六 函数
一 实验目的 掌握定义函数的方法;
实验六 函数 掌握函数实参与形参的对应关系以及“值传递”的方式; 3 掌握函数递归调用的方法;
二 实验内容 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。
【提示】设有两个正整数m和n ⑴ 实验四介绍了求最大公约数的算法,也可以用递归的方法求最大公约数。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则:
hcf(n,k)hnk0k0⑵ 若最大公约数为h,则最小公倍数为:m*n/h。
实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include
完整程序如下: #include int lcd(int m,int n,int h)/* 求最小公倍数的函数 */ { return(m*n/h);} main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);} 运行结果如下图: 编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求: Cnmm!n!(m-n)!【注意】函数f的类型应用long或double。 程序如下: #include void main(){ long m,n,c;printf(“请输入两个整数”); scanf(“%d,%d”,&m,&n);c=f(c);m=m*(m-1)n=n*(n-1)c=m/(n*c)printf(“组合为%dn”,c); } 有一个字符串,输入一个字符,编写函数dstr将输入的指定字符从字符串中删去。#include 完整程序如下: #include 实验总结:本次实验主要掌握定义函数的方法,掌握函数实参与形参的对应关系以及“值传递”的方式;掌握函数的嵌套调用和递归调用的方法;通过本次实验对函数和函数的调用有了更深的了解,加深对函数的认识。 一 实验目的 实验七 指针 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。 二 实验内容 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。 s11111 3572n1fun(float *sn,int n){ 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累加和s { 改变符号;/* 由负变正或由正变负 */ 求通项w;累加:s+=w;} 形参指针变量sn赋值;/* 通过形参sn传回累加和s */ } main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);} 完整程序如下: #include 输出结果如下图: 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的? swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p } main(){ int a,b;int *pt1,*pt2;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a 上机调试此程序。如果不能实现题目要求,指出原因并修改之。 子函数swap改成下面程序方可实现目的,主函数不变: swap(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} 下面的程序用来实现将一个3×3的矩阵转置。#include 程序修改如下: #include 应改为: printf(“%cn”,*pt++); 实验总结:本次实验主要掌握指针的概念,学会定义和使用指针变量,掌握指针、变量和数组的关系及使用方法,学会使用指向函数的指针变量,通过本次实验,很好的了解了指针的使用,加深了对指针的认识。 典型报表项目认定及相关实质性审计程序举例 (一)应收账款“计价和分摊”认定(坏账准备) 1.检查应收账款坏账准备计提和核销的批准程序,取得书面报告等证明文件,以确定其应收款项坏账计提的充分性; 2.逐笔评估金额重大的应收账款的可回收性,关注是否存在无法正常回款的情况; 3.应收账款余额账龄分析,重点关注账龄较长以及超过信用期限的项目,分析债务人的财务状况和还款能力,评价管理层估计其应收账款可收回性的合理性,坏账准备计提的充分性; 4.检查公司计提坏账准备所依据的资料、假设和方法,判断计提方法、依据和金额的合理性。 5.检查期后收到应收账款的情况,评价应收账款坏账准备计提的合理性; 6.通过比较前期坏账准备计提数和实际发生数,以及检查期后事项,并参考同行业的坏账准备计提的标准和坏账比率,评估公司坏账准备计提的合理性; 7.检查会计处理是否正确。 (二)应收账款“存在”认定 1.函证应收账款,检查回函结果,对债务人回函中反映的例外事项及存在争议的余额,应查明原因并作记录,必要时,应建议被审计单位作相应的调整; 2.对未回函项目及其他未函证实施函证的替代测试程序; 3.检查期后收款情况。 (三)收入“发生”认定 1.检查营业收入的确认条件、方法是否符合会计准则的规定并保持前后期一致; 2.对本期交易额进行测试,抽取本期营业收入账面记录(以收入明细账为起点),核查至发货单、客户签收记录等始单据; 3.对营业收入实施分析程序,对有异常情况的项目做进一步调查: 按收入类别或产品名称对销售数量、毛利率等进行比较分析; 按月度对本期和上期毛利率进行比较分析; 将本主要产品及重要客户的销售额及毛利率与上/同行业企业进行比较,分析其变动的合理性。 4.对营业收入进行截止性测试。 (1)通过测试资产负债表日前后金额大于一定金额的发货单据,与应收账款和收入明细账进行核对;同时,从应收账款和收入明细账选取在资产负债表日前后且金额大于一定金额的凭证,与发货单据核对,以确定销售是否存在跨期现象; (2)取得资产负债表日后所有的销售退回记录,检查是否存在提前确认收入的情况; (3)复核资产负债表日前后销售和发货水平,确定业务活动水平是否异常(如与正常水平相比),并考虑是否有必要追加截止程序; (4)结合对资产负债表日应收账款的函证程序,检查有无未取得对方认可的大额销售。 5.结合对应收账款项目的审计,选择主要客户函证本期销售额。 6.抽查售价是否符合既定的价格政策,并注意销售价格是否合理,是否存在异常波动的情况; 7.检查是否存在期后重大的销货退回情况,核查至原始单据。 【注】对于代销的收入确认,还应当执行如下程序: 1.检查销售合同,确定代销收入的确认时点; 2.检查通过代销机构销售的代销清单,以及是否有最终客户确认的书面依据,必要时发询证函予以确认,以证实该项外销是否符合销售收入确认的条件。 (四)存货的“计价与分摊”认定 1.实施存货计价测试。首先对存货价格组成内容进行审核,然后按计价方法对所选择的存货样本进行独立的计价测试,并与被审计单位的账面记录对比,分析形成差异原因; 2.获取存货的库龄分析,关注是否存在库龄较长的存货,并对存货进行减值分析,预计存货的可变现净值,确定需计提的跌价准备金额; 3.检查计提存货跌价准备的依据、方法是否前后期一致; 4.检查计提存货跌价准备所依据的资料、假设及方法,考虑是否有确凿证据为基础计算确定存货的可变现净值,检查存货跌价准备计提的合理性; 5.逐笔评估金额重大的库存商品的库龄和适销情况,关注是否存在无法正常销售的情况; 6.在实施存货监盘程序时,观察存货的状态; 7.抽查计提存货跌价准备的项目,期后是否确实存在跌价情况; 8.检查存货跌价准备的会计处理是否正确。 (五)存货的“存在”认定 1.年末实施存货(包括存放于第三方的存货)监盘程序; 2.如果实施存货监盘不可行,实施替代审计程序,例如,向存货保管方函证存货的数量和状况; 3.向客户函证发出商品年末结存情况以及发出商品所有权的归属,或审计项目组赴发出商品所在地进行实地盘点并走访客户确认发出商品所有权的归属; 4.必要时聘请专家确定存货的数量和状态。 (六)存货的“完整”认定 1.对资产负债表日的存货实施监盘,包括存放在大客户仓库的存货和零余额或小余额的仓库; 2.按月度、分产品实施分析程序。 (七)固定资产“计价与分摊”认定(固定资产减值准备) 1.分析企业的生产经营情况,识别是否存在固定资产减值迹象; 2.对于存在减值迹象的固定资产,检查管理层编制的减值测试计算表,检查有关现金流量预测、折现率等数据的合理性; 3.复核和测试管理层计提固定资产减值准备的过程: ——检查被审计单位计提的固定资产减值准备的依据是否充分,假设是否合理; ——测试计提固定资产减值准备的计算过程是否正确,考虑对固定资产减值准备的批准程序等; 4.运用独立估计; 5.复核期后处置固定资产的情况,检查处置固定资产时原计提的减值准备是否同时结转; 6.检查固定资产减值准备的会计处理是否正确。 (八)应收款项(票据)发生金融资产转移时,应收款项“存在”认定,金融负债“完整”认定 1.获取已出售的应收账款清单,检查与银行签订的应收账款转让协议,分析其是否符合企业会计准则规定的金融资产终止确认条件; 2.获取已经背书转让的应收票据清单,针对在期末尚未到期的部分检査其条款是否附有追索权,是否符合终止确认条件; 3.检查商业承兑汇票贴现的条款,确认是否含追索权; 4.向银行函证,确认所出售应收账款的规模和与出售相关的主要条款,查看是否有漏记的借款项目; 5.函证应收票据和短期借款,不符合终止确认条件的未到期部分不得终止确认; 6.检查企业贷款卡,核实账面记录是否完整。 (九)预付账款的“存在”认定 1.获取预付账款明细表,分析本期期末较上期期末增长的原因; 2.分析预付款项账龄及余额构成,特别关注账龄时间长的或与关联交易相关的大额项目,该款项是否根据有关合同进行支付; 3.检查主要供应商的采购合同,关注货款支付方式的约定是否与财务记录相符; 4.选择账龄长、大额或与关联交易相关异常的预付款项调査原因并实施函证程序,函证其余额和交易条款,并密切关注回函情况,分析回函差异,5.检查资产负债表日后的预付款项、存货及在建工程明细账,并检查相关凭证,核实期后是否实际收到实物并转销预付账款,分析资产负债表日预付账款的存在。 (十)无形资产研发支出的“计价和分摊”认定 1.向有关技术人员了解各项研发项目的进展; 2.检查管理层编制的有关可行性报告和研发项目预算等文件资料; 3.检查公司研发支出的核算方法,按项目归集的准确性,检查管理层对研发支出在研究阶段和开发阶段的划分是否正确; 4.检查有关开发支出是否满足会计准则关于开发支出资本化条件的有关规定; 5.获取并检查支持本期开发支出借方发生额的凭证和文件记录,检查各项支出是否与研究开发直接相关,确定是否符合资本化的条件; 6.对于研发成果的具体内容,在判断其真实性等方面应考虑利用专家的工作,同时,应关注研发成果的未来收益是否具有重大的不确定性。 7.对于资本化的开发支出,检查企业是否在期末实施减值测试,并考虑是否需要计提减值准备; 8.检查企业的会计处理是否正确。 (十一)衍生金融工具的实质性程序(如套期、衍生合同) 1.获取相关的文件协议或检查相关金融交易合同,确认相关金融工具品种类型; 2.检查相关金融工具交易的会计处理是否正确,是否符合企业会计准则的规定; 3.检查公允价值的确定是否合理,必要时利用专家工作判断金融工具的公允价值。 (十二)政府补助产生的 “递延收益”的“存在”、“计价和分摊”、“完整性”认定及“营业外收入”的“发生”和“准确性”、“完整性”认定 1.获取公司编制的当年营业外收入明细表,了解各项收入的性质,分析是否存在异常情况; 2.检查政府补助的有关文件,检查公司是否满足政府补助的确认条件并达到政府补助的所附条件; 3.检查政府补助款的银行进账单等原始凭据; 4.检查将政府补助划分为与资产相关的政府补助或与收益相关的政府补助是否准确; 5.逐笔检查大额的营业外收入项目,并追查至相关的原始凭证,确定是否符合收益的确认条件,特别关注是否存在应列入递延收益的与资产相关的政府补助; 6.检查将政府补助结转损益时是否满足有关条件。 (十三)股权激励产生的管理费用或相关资产的“发生”(存在)、“完整性”、“准确性”认定 1.取得并审阅股权激励计划的协议条款,了解可行权条件,并判断股份支付是属于权益结算还是现金结算; 2.对于会计处理所采用的相关所授予权益工具的公允价值,检查其基准日和金额是否合理,必要时,利用评估专家的工作; 3.了解管理层对于资产负债表日可行权员工人数估计的基本假设和判断依据,评估其合理性。 后续信息表明企业当期承担债务的公允价值(行权人数)与以前估计不同的,是否进行调整,并在可行权日调整到实际可行权水平; 4.根据股份支付的不同类型,检查会计处理是否符合企业会计准则的规定。 (十四)对外担保披露的“完整性”及抵押资产的“权利和义务”认定 1.逐笔检查对外担保的合同条款,了解被担保单位的生产经营状况和资金周转情况,结合向银行函证,综合判断是否存在因被担保单位无力偿还债务而应由被审计单位承担的连带责任; 2.结合对银行存款实施的函证程序,检查是否存在其他的担保责任但未予记录的情况; 3.向银行函证抵押资产的状况和金额;检查与抵押资产相关的原始单据,如发票、合格证等; 4.了解被审计单位是否存在未按期履行支付义务的情况,抵押资产是否已被或将被强制执行或处置; 5.检查抵押资产是否已经在财务报表中按照相关的规定予以充分的披露。 请各位注意舞弊风险分析 这里以“与编制虚假财务报告导致的错报相关的舞弊风险因素”为例,分析舞弊的三个风险因素的具体表现。 一、舞弊风险因素 (一)动机或压力 1.管理层或治理层的个人经济利益受到被审计单位财务业绩或状况的影响。 (1)个人为被审计单位的债务提供了担保; (2)在被审计单位中拥有重大经济利益; (3)其报酬中有相当一部分(如奖金、股票期权)取决于被审计单位能否实现激进的目标(如在股价、经营成果、财务状况或现金流量方面)。 2.管理层或经营者受到更高职级管理层或治理层对财务或经营指标过高要求的压力,如治理层为管理层设定了过高的销售业绩或盈利能力等激励指标。 3.管理层为满足外部预期或要求而承受过度的压力 (1)满足交易所的上市要求、偿债要求或其他债务合同要求的能力较弱; (2)需要进行额外的举债或权益融资以保持竞争力,包括为重大研发项目或资本性支出融资; (3)报告较差财务成果将对正在进行的重大交易(如企业合并或签订合同)产生可察觉的或实际的不利影响; (4)投资分析师、机构投资者、重要债权人或其他外部人士对盈利能力或增长趋势存在预期(特别是过分激进的或不切实际的预期),包括管理层在过于乐观的新闻报道和年报信息中作出的预期。 4.财务稳定性或盈利能力受到不利经济环境、行业状况或被审计单位运营状况的威胁 (1)竞争激烈或市场饱和,且伴随着利润率的下降; (2)难以应对技术变革、产品过时、利率调整等因素的急剧变化; (3)客户需求大幅下降,所在行业或总体经济环境中经营失败的情况增多; (4)经营亏损使被审计单位可能破产、丧失抵押品赎回权或遭恶意收购; (5)高速增长或具有异常的盈利能力,特别是在与同行业其他企业相比时; (6)在财务报表显示盈利或利润增长的情况下,经营活动产生的现金流量经常出现负数,或经营活动不能产生现金流入; (7)新发布会计准则、法律法规或监管要求。 (二)机会 1.对管理层的监督失效 (1)管理层由一人或少数人控制(在非业主管理的实体中),且缺乏补偿性控制; (2)治理层对财务报告过程和内部控制实施的监督无效。 2.组织结构复杂或不稳定 (1)高级管理人员、法律顾问或治理层频繁更换; (2)组织结构过于复杂,存在异常的法律实体或管理层级; (3)难以确定对被审计单位持有控制性权益的组织或个人。 3.被审计单位所从事业务或所处行业的性质提供了对财务信息作出虚假报告的机会 (1)从事超出正常经营过程的重大关联方交易,或者与未经审计或由其他会计师事务所审计的关联企业进行重大交易; (2)被审计单位具有强大的财务实力或能力,使其在特定行业中处于主导地位,能够对与供应商或客户签订的条款或条件作出强制规定,从而可能导致不适当或不公允的交易; (3)从事重大、异常或高度复杂的交易(特别是临近期末发生的复杂交易,对该交易是否按照“实质重于形式”原则处理存在疑问); (4)资产、负债、收入或费用建立在重大估计的基础上,这些估计涉及主观判断或不确定性,难以印证; (5)在经济环境及文化背景不同的国家或地区从事重大经营或重大跨境经营。 4.内部控制要素存在缺陷 (1)由于会计人员、内部审计人员或信息技术人员不能胜任而频繁更换; (2)会计系统和信息系统无效,包括内部控制存在值得关注的缺陷情况。 (三)态度或借口 1.管理层态度不端或缺乏诚信 (1)被审计单位、高级管理人员或治理层存在违反证券法或其他法律法规的历史记录,或由于舞弊或违反法律法规而被指控; (2)管理层过于关注保持或提高被审计单位的股票价格或利润趋势; (3)管理层向分析师、债权人或其他第三方承诺实现激进的或不切实际的预期; (4)管理层总是试图基于重要性原则解释处于临界水平的或不适当的会计处理; (5)业主兼经理未对个人事务与公司业务进行区分; (6)为了避税的目的,管理层表现出有意通过使用不适当的方法使报告利润最小化。 2.管理层与注册会计师的关系异常或紧张 (1)在会计、审计或报告事项上经常与现任或前任注册会计师产生争议; (2)对注册会计师接触某些人员、信息或与治理层进行有效沟通施加不适当的限制; (3)对注册会计师提出不合理的要求,如对完成审计工作或出具审计报告提出不合理的时间限制; (4)管理层对注册会计师表现出盛气凌人的态度,特别是试图影响注册会计师的工作范围,或者影响对执行审计业务的人员或被咨询人员的选择和保持。 二、舞弊导致的重大错报风险 1.舞弊导致的重大错报风险属于需要注册会计师特别考虑的重大错报风险,即特别风险。 2.在识别和评估由于舞弊导致的重大错报风险时,注册会计师应当基于收入确认存在舞弊风险的假定,评价哪些类型的收入、收入交易或认定导致舞弊风险。 (1)某些被审计单位在收入确认方面存在的舞弊风险可能高于其他被审计单位。 例如,如果上市实体依据收入的逐年增长或利润来衡量业绩,管理层可能有压力或动机通过不恰当的收入确认编制虚假财务报告。 类似地,如果被审计单位的现金销售占收入的比例很大,收入确认方面的舞弊风险可能较大。 (2)当被审计单位仅存在一种简单的收入交易(如单一租赁资产的租赁收入)时,注册会计师可能认为收入确认方面不存在由于舞弊导致的重大错报风险。 如果认为收入确认存在舞弊风险的假定不适用于业务的具体情况,从而未将收入确认作为由于舞弊导致的重大错报风险领域,注册会计师应当在审计工作底稿中记录得出该结论的理由。 报表层次重大错报风险的总体应对 一、常规报表层次重大错报风险总体应对措施 1.向项目组强调保持职业怀疑的必要性 2.指派更有经验或具有特殊技能的审计人员,或利用专家的工作 3.提供更多的督导 4.在选择拟实施的进一步审计程序时融入更多的不可预见因素 5.对拟实施审计程序的性质、时间安排和范围作出总体修改 二、增强审计程序不可预见性的方法 1.增加审计程序不可预见性的思路 (1)对某些以前未测试的低于设定的重要性水平或风险较小的账户余额和认定实施实质性程序。 (2)调整实施审计程序的时间,使其超出被审计单位的预期。 (3)采取不同的审计抽样方法,使当年抽取的测试样本与以前有所不同。(例如,从货币单位抽样改为随机抽样;在等距抽样中增加抽样起点的个数等)。 (4)选取不同的地点实施审计程序,或预先不告知被审计单位所选定的测试地点。 2.增加审计程序不可预见性的示例 以“销售/应收账款”为例 (1)向以前审计过程中接触不多或未曾接触过的被审计单位员工询问,例如负责处理大客户账户的销售部人员。 (2)改变实施实质性分析程序的对象,例如对收入按细类进行分析。 (3)针对销售和销售退回延长截止测试期间。 (4)实施以前未曾考虑过的审计程序,例如: ①函证确认销售条款或者选定销售额较不重要,以前未曾关注的销售交易,例如对出口销售实施实质性程序; ②实施更细致的分析程序,例如使用计算机辅助审计技术复核销售及客户账户; ③测试以前未曾函证过的账户余额,例如,金额为负或是零的账户,或者余额低于以前设定的重要性水平的账户; ④改变函证日期,即把所函证账户的截止日期提前或者推迟; ⑤对关联公司销售和相关账户余额,除了进行详细函证外,再实施其他审计程序进行验证。 三、舞弊导致的重大错报风险总体应对措施 1.在分派和督导项目组成员时,考虑承担重要业务职责的项目组成员所具备的知识、技能和能力,并考虑由于舞弊导致的重大错报风险的评估结果; 2.评价被审计单位对会计政策(特别是涉及主观计量和复杂交易的会计政策)的选择和运用,是否可能表明管理层通过操纵利润对财务信息作出虚假报告; 3.在选择审计程序的性质、时间安排和范围时,增加审计程序的不可预见性。 舞弊导致认定层次重大错报风险的应对 一、基本应对措施 1.改变拟实施审计程序的性质,以获取更为可靠、相关的审计证据,或获取其他佐证性信息。 (1)对特定资产进行实地观察或检查变得更重要,或选择使用计算机辅助审计技术以审计更多的有关在重要账户或电子交易文档中包含数据的证据; (2)设计程序以获取额外的佐证信息。 2.改变实质性程序的时间。 注册会计师可能认为在期末或接近期末实施实质性程序能够更好地应对由于舞弊导致的重大错报风险。 3.改变审计程序的范围。 包括扩大样本规模、采用更详细的数据实施分析程序等。 【举例】针对收入确认导致的虚假财务报告的具体应对程序。 1.针对收入项目,使用分解的数据实施实质性分析程序。 2.向被审计单位的客户函证相关的特定合同条款以及是否存在背后协议。 3.向被审计单位的销售和营销人员或内部法律顾问询问临近期末的销售或发货情况,以及他们所了解的与这些交易相关的异常条款或条件。 4.期末在被审计单位的一处或多处发货现场实地观察发货情况或准备发出的货物情况(或待处理的退货),并实施其他适当的销售及存货截止测试,以验证收入的真实性和确认截止时点的准确性。 5.对于通过电子方式自动生成、处理、记录的销售交易实施控制测试,以确定这些控制是否能够为所记录的收入交易已真实发生并得到适当地记录提供保证。 【举例】针对存货数量导致的虚假财务报告的具体应对程序。 1.检查被审计单位的存货记录,以识别在被审计单位盘点过程中或结束后需要特别关注的存货存放地点或存货项目。 2.在不预先通知的情况下对特定存放地点的存货实施监盘,或在同一天对所有存放地点实施存货监盘。 3.要求被审计单位在报告期末或临近期末的时点实施存货盘点,以降低被审计单位在盘点日与报告期末之间操纵存货数量的风险。 4.在观察存货盘点的过程中实施额外的程序,例如,更严格地检查包装箱中的货物、货物堆放方式(如堆为中空)或标记方式、液态物质(如香水、特殊的化学物质)的质量特征(如纯度、品级或浓度)。 利用专家的工作可能在此方面有所帮助。 5.按照存货的等级或类别、存放地点或其他分类标准,将本期存货数量与前期进行比较,或将盘点数量与永续盘存记录进行比较。 6.利用计算机辅助审计技术进一步测试存货实物盘点目录的编制。例如,按标签号进行检索以测试存货的标签控制,或按照项目的顺序编号进行整理以检查是否存在漏记或重复编号。 二、管理层凌驾于控制之上的风险的应对 1.测试日常会计核算过程中做出的会计分录以及编制财务报表过程中作出的其他调整是否适当。 (1)向参与财务报告过程的人员询问与处理会计分录和其他调整相关的不恰当或异常的活动; (2)选择在报告期末做出的会计分录和其他调整; (3)考虑是否有必要测试整个会计期间的会计分录和其他调整。 2.复核会计估计是否存在偏向,并评价产生这种偏向的环境是否表明存在由于舞弊导致的重大错报风险。 (1)评价管理层在做出会计估计时所作的判断和决策是否反映出管理层的某种偏向(即使判断和决策单独看起来是合理的),从而可能表明存在由于舞弊导致的重大错报风险。如果存在偏向,注册会计师应当从整体上重新评价会计估计; (2)追溯复核与以前财务报表反映的重大会计估计相关的管理层判断和假设。 3.对于超出被审计单位正常经营过程的重大交易,或基于对被审计单位及其环境的了解以及在审计过程中获取的其他信息而显得异常的重大交易,评价其商业理由(或缺乏商业理由)是否表明被审计单位从事交易的目的是为了对财务信息做出虚假报告或掩盖侵占资产的行为。 经营风险识别 1.行业发展——被审计单位不具备足以应对行业变化的人力资源和业务专长。 2.开发新产品/提供新服务/进入新的业务领域/发生新的交易——被审计单位产品责任增加,对新业务领域或新产品不熟悉增大经营活动的风险,同时可能带来新的与内部控制相关的风险。 3.业务扩张(业务快速发展)——被审计单位对市场需求的估计不准确,业务扩张可能增加内部控制失效的可能性。 4.监管要求及经营环境的变化——被审计单位法律责任增加,竞争压力的增加以及由此导致的重大经营风险。 5.本期及未来的融资条件——被审计单位由于无法满足融资条件而失去融资机会,进而影响企业的经营活动。 6.信息系统的重大变化(新信息系统的使用或对原系统进行升级)——被审计单位信息系统与业务流程难以融合,改变与内部控制相关的风险。 7.发展海外经营海外扩张或收购——会带来新的并且往往是特别的风险,进而可能影响内部控制,如外币交易的风险。 8.企业重组——重组可能带来裁员以及管理职责的重新划分,企业文化和经营活动难以融合,导致内部控制失效的风险。 9.新技术的运用——将新技术运用于生产过程和信息系统可能改变原有业务流程及原有内部控制活动,带来新的经营风险。 10.新员工的加入——新员工可能对内部控制有不同的认识和关注点,增大操作过程的风险。 11.实施战略产生的需要运用新的会计要求——被审计单位执行新要求不当或不完整,执行成本过高。第四篇:C语言实验程序、总结 实验七 指针
第五篇:典型报表项目认定及相关实质性审计程序举例