博文

数组统计(汇编)(2007-04-09 12:21:00)

摘要:;---------------------------------------------------------
;统计数组中的正数,负数和 0 的个数
;--------------------------------------------------------- ;-------------------------------------------------------- ; 文件 macro.mac ;--------------------------------------------------------- ;---------------------------------------------------------
;屏幕打印回车换行符,用到寄存器 ax,dx
;---------------------------------------------------------
macPutEnt macro 
 mov dl,0dh
 mov ah,02h
 int 21h
 mov dl,0ah
 mov ah,02h
 int 21h
 endm ;---------------------------------------------------------
;屏幕输出一个字符 OPRCH,用到寄存器 dx
;---------------------------------------------------------
macPutChar macro OPRCH
 mov dl,OPRCH
 mov ah,02h
 int 21h
 endm ;---------------------------------------------------------
;屏幕输出以 '$' 结尾的字符串,OPR为字符串变量
;用到寄存器 ax,dx
;---------------......

阅读全文(3533) | 评论:1

初级汇编,减法(2007-04-09 12:20:00)

摘要:;---------------------------------------------------------
;条件转移,溢出测试,简单减法,数制转换
;--------------------------------------------------------- .model small data segment
 MAX dw 100
 x dw 30
 y dw 25
 result dw ?
 msg_th db 'The x too high !$'
 msg_of db 'Overflow !$'
 rlt_asc db 10 dup(?)
 temp_asc db 10 dup(?) 
data ends code segment
 assume cs:code,ds:data 
;---------------------------------------------------------
;屏幕打印回车换行符,用到寄存器 ax,dx
;---------------------------------------------------------
macPutEnt macro 
 mov dl,0dh
 mov ah,02h
 int 21h
 mov dl,0ah
 mov ah,02h
 int 21h
 endm ;---------------------------------------------------------
;屏幕输出一个字符 OPRCH,用到寄存器 dx
;----------------------------......

阅读全文(3932) | 评论:0

汇编的加法代码(2007-04-07 19:29:00)

摘要:;计算 a + b,其中a b的位数可以在 0 - 2^15 之间,默认位数为 50
;注意 a,b 必须为正数否则结果不正确
;****************************************************************** .model small .const
 MAX equ 50  ;加数的最大位数 .data
 a db MAX,MAX dup(?)
 b db MAX,MAX dup(?)
 txta db 'Enter a:$'
 txtb db 'Enter b:$'
 result db 'a + b = $'
 enter db 13,10,'$' .code
;------------------------------------------------------------------
;子程序,在屏幕上打印回车
;------------------------------------------------------------------
PtEnter proc near
 mov dx,offset enter
 mov ah,09h
 int 21h
 ret
PtEnter endp ;------------------------------------------------------------------
;在提示下输入数据,提示信息为 si ,数据输入到 di
;------------------------------------------------------------------
GetData proc near
 mov dx,si
 mov a......

阅读全文(4920) | 评论:0

汇编初级代码(2007-04-06 13:24:00)

摘要:最近对汇编语言非常入迷,于是开始了汇编的旅程。
博客上不知道搞些什么东西,所以就将自己写的一
些初级代码传上来了,初学者摆弄一下这些最基本
的程序还是可以的。 ;-------------------------------------------
;最经典的 hello,world !
;-------------------------------------------
.model small   ;定义程序的存储模型
.data    ;定义数据段
hello db 'hello,world !',13,10,'$'
.code    ;定义代码段
main proc far
start: mov ax,@data ;载入数据段
 mov ds,ax  mov dx,offset hello ;打印字符串
 mov ah,09h
 int 21h  mov ah,4ch  ;返回DOS
 int 21h
main endp
 end start ;-----------------------------------------------
;随机数产生器,间隔一定时间产生80以内的随机数
;-----------------------------------------------
.MODEL SMALL
.DATA
OUTBUF DB 4 DUP(?)
TXT1   DB "Create Random data(below 80)2007-4-5",13,10,'$'
TXT2   DB "Input 'Q' or 'q' to exit",13,10,'$' 
ENTER  D......

阅读全文(3677) | 评论:2

C语言变成了鸡肋,痛苦(2007-03-30 07:56:00)

摘要:从C向C++转变         学了一两年的C了,现在要学C++,因为不可否认的C++(JAVA)面向对象是当前主流当然这或许是自己一厢情愿吧,听说现在嵌入式的C开发也很热门 。写过很多的C程序几万行的代码应该有了,对C自认为还是比较熟悉,这些熟悉却成了我食之无喂,弃之不舍的鸡肋,哎,真是苦脑。C++虽然是C的加强,但是他们根本不是一码事,我不是指那些语法而是指编程思想。人的一生有很多的选择,我现在走在了C和C++的分叉口,徘徊不定,人总是要做出选择的,尽管某些选择太过残忍 !最后我决定还是选C++,原因有很多,我读过几本C++方面的书,感觉C++是一门不错的语言;还有C太复杂了不说别的我就说软考里的那道程序题,C的我看了一两个小时,去年那道好象是关于B树的吧,自己对B树不熟悉,翻书看了以后也还是不太明白,而关于C++的那些填代码的题却非常简单竟然在一节课里近两年的题都做完了而且成功率很高。当然这不能说明什么,C++也不是想象中的那么容易。我最后想说的就是,门门通不如一门精,不要说你精通这个精通那个,除非是求职时面对那些无知的招聘人员。精通一门,其它的能说个熟悉就够了 !搞软件英语是很重要的,数据结构和算法任何时候学都不是错。 帖几个招聘信息: B) 软件开发工程师-C/C++
大学本科以上学历,计算机专业,2年以上软件产品开发经验
精通C/C++ 编程
精通UNIX或WINDOWS平台编程
熟悉INFORMIX或DB2或ORACLE或SYBASE数据库
精通Socket网络通讯编程

职务技能:
具有良好的沟通能力和团队合作精神
具备市场意识、质量意识
有创新精神、乐于学习
头脑反应敏捷、乐于思考 // 一大堆的精通???沟通能力和团队精神倒说的不错,高手尤其要注意。 本科或本科以上学历,电子、计算机、控制或相关专业,软件基础扎实,头脑灵活,熟练掌握多种嵌入式CPU的软件编程,熟练应用C语言,对ARM或其它32位嵌入式处理器有一定了解,3年以上相关产品的软件设计和开发经验,有linux下编程实践或FPGA编程实践的优先。

// 这个招牌广告还不错,开发经验 3 年,晕 ......

阅读全文(2938) | 评论:1

具有破坏性的C程序(2007-03-28 11:41:00)

摘要:论坛上一网友出的,原帖: 请问大家如何编一个一发现D盘的exe文件就自动删除的程序??做这个东西不是为了破坏,而是为了学校机房的安全,不让学生在下面搞破坏,本人对编程一无所知,哪位好心人士能提供代码或者程序.谢谢   /* 自己以前写过类似的程序,所以发了十几分钟写了个基本上满足LZ
   需要的程序.但是真正用于机房还差点,首先应该有个计时器,隔段
   时间扫描一遍D盘而不是不停的扫描,其次应该驻留在内存自动运行
   而不是放在谁都可以关闭它的地方。不过要我实现所有的这些功能
   呵呵…… 总要意思一下吧 !

   运行该程序D盘下的所有系统文件,系统目录以及隐藏文件,隐藏目录
   只读文件,只读目录会被修改。
   
   注意请在调试时创建临时目录,否则如果D盘下的所有.exe文件被删
   除与作者无关 ,使用该程序造成的一切损失与作者无关 。

   正常退出该程序请输入 e     编译环境 VC++6.0
*/
#include <stdio.h>
#include <io.h>
#include <string.h>
#include <direct.h>
#include <conio.h>
#include <stdlib.h>

#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_FILE 0x00000020

void  ......

阅读全文(3760) | 评论:0

有趣的数阵(2007-03-27 19:58:00)

摘要:编程爱好者 论坛上某个网友出的,原帖如下: 请大家帮我仔细的提示一下这个回路的题目怎么做?怎样打出如下图案:
1   2   3   4   5   6
14  15  16  17  18  7
13  12  11  10  9   8 解题思路:很容易的我们发现这个数阵很有规律,假如我们有一个二维数组
          a[i][j],如果我们能把这些数按上面那样填进数组输出就不成问
          题了,我们发现第一行依次向右增加(从1开始),我们设个变量k
          首先设 k = 1,k按1增长填进数组,数组下标的规律是首先 j++;然后
          方向 变为向下即 i ++; 之后方向向左,即 i --, j --;随后向上即
          i --;最后又回到出发的方向,向右 ^_^.如果填数的过程中我们知道
          什么时候该向哪个方向走就好了,为了实现这个目的,我们可以将数组
          初始化为 0 ,并且在外围增加一层墙(设值为 1),遇到墙我们就回退
          因为我们知道方向变化的规律,我们按这个......

阅读全文(3483) | 评论:0

vBinLin病毒汇编源码(2007-03-25 19:34:00)

摘要://// 资源来自网络,仅供学习参考 一个基于98下的,具有病毒特性的程序。
病毒本来就是一个技术性蛮高的程序,但是因为他常常犯错,给人感觉又神秘又恐怖。
能过这段代码,你可以更深该的了解类似的程序。
知道他并不可怕,只是被一些人要到了不正当的地方。
其实有些程序利用病毒技术来做。还是非常好的(有些安全方面的程序就是利用这一技术) 本程序仅供学习使用,若用到不正当地方,本人概不负责!
感叹想当年如果有类似的源代码,我也不会走一些不该走的弯路。
阅读前提:了理PE文件结构。 ;=========================================< 彬 >==
;名 称: vBinLin病毒
   ; AngelSoft WorkGroup
;语 言: MASM Win98
;日 期: 2001年8月24日
;====================================================
;出 处: Http://vbin.51.net
;备 注: 有关代码未屏蔽!请注意!若没完全明白请误调试
   ; 病毒本是一种高级编程技术,本代码只供学习使用
   ; ,若用到其它用途本人概不负责!
;注 意: 如需转载,请保留此文件的完整性!!!!!
;===================================================
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\comctl32.inc
include \masm32\include\user32.inc
include \masm32\include\gdi32.inc
include \masm32\include\comdlg32.inc includelib \masm32\lib\gdi32.lib
includelib \m......

阅读全文(3324) | 评论:0

VS2005使用图解(2007-03-25 08:53:00)

摘要:
VS2005使用图解 使用过VC++6.0的都知道,VC6.0对标准C++的支持不够,VS2005改变了这个尴尬局面,
看到一些朋友问过怎么使用VS于是我就发了个把小时把使用过程的图片考了下来
只是抛砖引玉……(文件--》新建-》新建项目) 还有张图传不上了

















......

阅读全文(5390) | 评论:4

有关宽字符(2007-03-23 13:32:00)

摘要:宽字符           //出自摆渡

Unicode或者宽字符都没有改变char数据型态在C中的含义。char继续表示1个字节的储存空间,sizeof (char)继续返回1。理论上,C中1个字节可比8位长,但对我们大多数人来说,1个字节(也就是1个char)是8位宽。

C中的宽字符基于wchar_t数据型态,它在几个表头文件包括WCHAR.H中都有定义,像这样:

typedef unsigned short wchar_t ;
因此,wchar_t数据型态与无符号短整数型态相同,都是16位宽。

要定义包含一个宽字符的变量,可使用下面的语句:

wchar_t c = ’A’ ;
变量c是一个双字节值0x0041,是Unicode表示的字母A。(然而,因为Intel微处理器从最小的字节开始储存多字节数值,该字节实际上是以0x41、0x00的顺序保存在内存中。如果检查Unicode文字的计算机储存应注意这一点。)

您还可定义指向宽字符串的指针:

wchar_t * p = L"Hello!" ;
注意紧接在第一个引号前面的大写字母L(代表「long」)。这将告诉编译器该字符串按宽字符保存-即每个字符占用2个字节。通常,指针变量p要占用4个字节,而字符串变量需要14个字节-每个字符需要2个字节,末尾的0还需要2个字节。

同样,您还可以用下面的语句定义宽字符数组:

static wchar_t a[] = L"Hello!" ;
该字符串也需要14个字节的储存空间,sizeof (a) 将返回14。索引数组a可得到单独的字符。a[1] 的值是宽字符「e」,或者0x0065。

虽然看上去更像一个印刷符号,但第一个引号前面的L非常重要,并且在两个符号之间必须没有空格。只有带有L,编译器才知道您需要将字符串存为每个字符2字节。稍后,当我们看到使用宽字符串而不是变量定义时,您还会遇到第一个引号前面的L。幸运的是,如果忘记了包含L,C编译器通常会给提出警告或错误信息。

您还可在单个字符文字前面使用L前缀,来......

阅读全文(3044) | 评论:0