Archive for the computer Category

    简单实现printf函数

    记得以前看谭老头的书自学C语言,着实吃了不少苦头(主要是爱钻牛角尖), 翻开第一章就来了个printf函数,倒不是它很难用,而是觉得它很神奇, 不神奇吗, 我当时很好奇为什么你让它printf一行字符串,它就能打印出来, 太智能了!!!

    后来又学了汇编,顿时觉得来劲了,神气个啥呀,看老孙也给你写一个:

    Read the rest of this entry »

    汇编终极boss

    这是迄今为止我编写的最复杂的程序(其实也没编过什么),即王爽汇编最后一个课程设计。

    这次课程设计的任务是编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。
    该程序的功能如下:

    1)列出功能选项,让用户通过键盘进行选择,界面如下:
    1. reset pc :重新启动计算机
    2. start system :引导现有操作系统
    3. clock :进入时钟程序
    4. setclock :设置时间

    2)用户输入“1”后重新启动计算机。

    3)用户输入“2”后引导现有操作系统。

    4)用户输入“3”后,执行动态显示当前日期、时间的程序,按下f1键后,改变显示颜色;按下esc键,返回主选单。

    5)用户输入“4”后可更改当前的日期,时间,更改后返回到主选单

    Read the rest of this entry »

    编写多功能中断例程

    这是王爽汇编上的一道实验题,安装一个包含四个功能子程序的中断例程。
    没什么特别这处,主要是第一次没用org指令(王爽在书中好像没提到),结果总是出错。

    Read the rest of this entry »

    差点挂掉

    北京时间5月3日凌晨3点33分,历时4个多小时,做完了第一个课程设计。很是庆幸我的手指,还有敲打键盘的力气,饥锇,头沉,眼酸,旁边有个蚊子在我身边飞来飞去,右前上方,gali的呼噜声滚滚而来,无穷无尽,右前方,shit的磨牙声清脆刺耳,边绵不绝。不写了,不说了,快挂 了,倒…那个小蚊…你想咬就咬吧…..啊…
    Read the rest of this entry »

    十进制数据显示

    昨晚快做完的时候,快要断电了,结果不得不赶紧关机我这个没有电池的伪笔记本,现在终于完成通过调试了,这里面用到了三个子程序,这么长长的一大篇近百行源码实现的功能却简单的令人发指:以十进制方式将ax中的数据显示在屏幕上。

    不过,这对于了解电脑内部的工作原理是非常有用的。以前学的半吊子硬件基础对现在的汇编学习也起了不小帮助。

    网工看的一踏糊涂,法语课上的直想呕吐(一个单词tmd十几个变位),还是汇编好。

    某些老师上课烂还可以原谅,但还爱点名就是你们的不对了。

    五一到了,明天去野人谷。
    Read the rest of this entry »

    王爽汇编实验九

    assume cs:code,ds:data,ss:stack

    data segment
    db 3 dup (‘wweellccoommee ttoo mmaassmm!!’) ;比较变态
    data ends

    stack segment
    dw 0,0,0,0,0,0,0,0
    stack ends

    code segment
    start:mov ax,data
    mov ds,ax
    mov ax,stack
    mov ss,ax
    mov sp,16
    mov ax,0b800h
    mov es,ax
    mov bx,780h

    mov di,1
    mov cx,16
    t1:mov byte ptr 00h[di],02h
    mov byte ptr 20h[di],24h
    mov byte ptr 40h[di],71h
    add di,2
    loop t1 ;集中设置颜色

    mov cx,3
    mov di,0
    s1:push cx
    mov cx,16
    mov si,0
    s:mov ax,[di]
    mov es:[bx].40h[si],ax
    add si,2
    add di,2
    loop s
    add bx,0a0h
    pop cx
    loop s1 ;将字符放入屏幕中央

    mov ax,4c00h
    int 21h
    code ends
    end start
    其实,还有更简单的方法,就这么着吧!

    最新进展

    看到第八章了,应该有一半了吧,为这个实验题搞得头晕脑胀的,就是把data段中的数据按年代分类存入table段中,累死了,方法虽然有点白痴,但总算是做出来了!睡觉去啦!哈哈
    Read the rest of this entry »

    喇叭发声

    原程序是由chunk lee在debug下编写的,我将其改编,以便用masm5编译。尽管声音只有嘟的一下,但能够体验一下通过汇编直接控制硬件的感觉,还是很有趣的。

    assume cs:code
    code segment
    mov cx,700h
    s1:push cx
    in al,61h
    xor al,02h
    out 61h,al
    mov cx,1500h
    s:loop s
    pop cx
    loop s1
    mov ax,4c00h
    int 21h
    code ends
    end

    开始学习汇编

    这几天在看汇编,用的是网上好评如中国人口一般多的王爽汇编教程。学习过程很幸福,很激动,在此严重感谢王爽老师,并强烈鄙视某些道貌岸然的教科书!!

    放着好好的网络工程师不学,怎么突然对汇编感兴趣了呢? 我的记划是,上课就去看网工,回来就看汇编,累了就看英语。

    下面是debug的一些命令:
    r, 查看,修改寄存器。r cs, r ip
    d,查看内存 如d 1000:0
    e,修改内存 如e 1000:0
    a,编写汇编指令
    u,将机器码翻译为汇编指令
    t,执行指令
    g, 执行到给定的偏移地址
    p,重复执行循环。
    Read the rest of this entry »