汇编网首页登录博客注册
mahdi_glt的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
文章收藏
友情链接

[2011-05-16 23:23] 实验16 使用数据标号编写中断例程

assume cs:code

code segment
;==================中断例程======================
;这段程序将被写入内存
;这里table后面sub的标号在编译的时候会被转换成标号对应的内存偏移地址
;这里的call指令的位移地址等于sub标签处的地址减去call后一条指令的IP地址
;是的程序能够正确的调用子程序,但是安装了之后,call的位置发生变化了,
;由于sub标签的地址仍是以前的那个,导致计算出来的位移不准确,会跳转到
;其他的地方去,为了避免跳转不准备,我们把中断例程都放在程序的开头处
;即第一条指令都在偏移...
阅读全文 | 评论次数(0) | 浏览次数(543) | 所属类型(我的代码)

[2011-05-14 07:26] 实验15 安装新中断例程  松开按键A的时候满屏幕都是A(纯DOS下有用)

点击查看原图
assume cs:code

stack segment
        db 128 dup (0)
stack ends

code segment
;=======================设置安装程序=============
start:
        mov ax,stack
        mov ss,ax
        mov sp,128;堆栈设置
        
        push cs
        pop ds
        mov ax,0
        mov es,ax
        mov si,offset int9
        mov di,204h
        mov cx,offset endint9-offset int9
        cld
        r...
阅读全文 | 评论次数(0) | 浏览次数(536) | 所属类型(我的代码)

[2011-05-13 00:10] 自制数字时钟 需要按alt+enter 开启全屏才能有闪烁效果

点击查看原图
assume cs:code
code segment
setting:mov ax,cs
        mov ds,ax
        mov si,offset my_time

        mov ax,20h
        mov es,ax
        mov di,0

        mov cx,offset end_time-offset my_time
        cld
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr e...
阅读全文 | 评论次数(0) | 浏览次数(504) | 所属类型(我的代码)

[2011-05-12 16:23] 实验13 int 7ch 模拟loop循环

assume cs:code
code segment
setting:mov ax,cs
        mov ds,ax
        mov si,offset myloop

        mov ax,20h
        mov es,ax
        mov di,0

        mov cx,offset end_myloop-offset myloop
        cld
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr e...
阅读全文 | 评论次数(0) | 浏览次数(440) | 所属类型(我的代码)

[2011-05-12 16:20] 实验13 int 7ch 显示字符的中断例程

assume cs:code
code segment
setting:mov ax,cs
        mov ds,ax
        mov si,offset show

        mov ax,20h
        mov es,ax
        mov di,0

        mov cx,offset end_show-offset show
        cld
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr es:[4*7...
阅读全文 | 评论次数(0) | 浏览次数(424) | 所属类型(我的代码)

[2011-05-11 10:58] 0号中断的安装 带测试代码

点击查看原图
assume cs:code

code segment
install:mov ax,cs
        mov ds,ax
        mov si,offset do        ;设置源地址指向
        mov ax,0
        mov es,ax
        mov di,200h                 ;设置目的地址
        
        mov cx,offset enddo-offset do
        cld
        rep movsb                     ;安装中断程序

        mov ax,0
        mov es,ax
        mov word ptr es:[0*4],200h
        mov word ptr es:[0*4+2],0 ...
阅读全文 | 评论次数(0) | 浏览次数(517) | 所属类型(我的代码)

[2011-05-10 09:19] 实验11 通过CMP和条件转移的搭配来判断ascII码是否在a~z之间

assume cs:code

data segment
    db "Beginner'is All-purpose Symbolic Instruction Code.",0
data ends

code segment
start:mov ax,data
    mov ds,ax
    mov si,0
    call letterc

    mov ax,4c00h
    int 21h

;=====================================================
letterc:push cx
    ...
阅读全文 | 评论次数(0) | 浏览次数(452) | 所属类型(我的代码)

[2011-05-03 12:17] 用自己的方法写的课程设计1

点击查看原图
这个是我学习王爽汇编至今为止用的时间最久写的一个程序了,它比较综合,运用到了很多方法和语句,所以我坚持用自己的方法去完成它,哪怕写很久也要自己写,但是幸亏我思考了3天写出来了,哈哈 一直在整理自己的思路。也希望大家在写这个程序的时候不要去看别人写的,实在不行了才去看看人家的思路。
  写这个代码给我带来的启示:在写程序的时候写想好要用到哪些子程序,子程序的参数靠哪些寄存器来传递,哪些参数是必须要有的,哪些可以把它在子程序里面定死,必须要有的也就是一些在不同情况下需要改变的参数,需要在主调程序里面进行改变的,比如我写的时候我就把显示缓存中的颜色给定死了,因为这里用不到他,我们的目的是把内存中的...
阅读全文 | 评论次数(0) | 浏览次数(576) | 所属类型(我的代码)

[2011-04-28 22:30] 第十章 试验十 第三题 数值显示

assume cs:code

data segment
        db 10 dup (0)
data ends

code segment
start:mov ax,12666
        mov bx,data
        mov ds,bx
        mov si,0
        call dtoc

        mov dh,8
        mov dl,3
        mov cl,2
        call show_str
        
        mov ax,4c00h
        int 21h

;---------------------------dtoc------------------------------
dtoc:push a...
阅读全文 | 评论次数(0) | 浏览次数(408) | 所属类型(我的代码)

[2011-04-28 22:26] 【子程序】dtoc 用来将数字转换成10进制形式的字符 保存至数据段中

;ds:si指向字符串的首地址
;(ax)接收word型数据

;---------------------------dtoc------------------------------
dtoc:push ax
        push bx
        push cx
        push dx
        push di
        push si

        mov bx,10

dtoc_s1:mov dx,0     ;做32位的除法,因为12666/10=1266 al中放不下
        
        div bx       ;除了以后 以为余数小于10,所以肯定在dl中,商在ax中
        add dl,30h   ;转换成a...
阅读全文 | 评论次数(0) | 浏览次数(438) | 所属类型(我的代码)
『 查看更多文章 』