assume cs:code
code segment
;==================中断例程======================
;这段程序将被写入内存
;这里table后面sub的标号在编译的时候会被转换成标号对应的内存偏移地址
;这里的call指令的位移地址等于sub标签处的地址减去call后一条指令的IP地址
;是的程序能够正确的调用子程序,但是安装了之后,call的位置发生变化了,
;由于sub标签的地址仍是以前的那个,导致计算出来的位移不准确,会跳转到
;其他的地方去,为了避免跳转不准备,我们把中断例程都放在程序的开头处
;即第一条指令都在偏移...
- 【WIN32汇编教程】(第一课)配置出WIN32汇编的开发环境
- 欢迎加入编程论坛:www.ghostasm.com 我们提供大量工具和学习的资料。VIP3高级群:89366200
- 在学汇编的来加群
- 为什么因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正呢?
- 第6章 实验5 第二题
- 【WIN32汇编教程】(第四课)编写出第一个“hello ghosthouse”程序
- 【WIN32汇编教程】(第三课)了解win32汇编程序的基本结构
- 【WIN32汇编教程】(第二课)Makefile文件的编写和nmake工具的使用
- 欢迎加入编程论坛:www.ghostasm.com 我们提供大量工具和学习的资料。VIP3高级群:89366200
- 欢迎加入编程论坛:www.ghostasm.com 我们提供大量工具和学习的资料。VIP3高级群:89366200
[2011-05-16 23:23] 实验16 使用数据标号编写中断例程
阅读全文 |
评论次数(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...
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...
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...
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...
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 ...
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
...
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...
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...
;(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) |
所属类型(我的代码)
『 查看更多文章 』