安装一个新的INT 7CH中断例程,为显示输出提供如下子程序
1)清屏
2)设置前景色和背景色
3)向上滚一行
入口参数如下
1)用ah寄存器传递功能号:0表示清屏,1表示设置颜色,2表示向上滚一行
2)对于1功能号,用al传送颜色值
assume cs:code
code segment
sets: push bx ;将中断例程放在START前边,方便获取偏移地址
jmp short set
abc dw offset set0+200h,offset set1+200h,off...


- [wsrf] 通过DEBUG跟踪就可以发现其中的关键,楼主是没有坚持到最后吧? 最好还是独立解决,这才能锻炼自己的 05/06 22:43
- [wsrf] 通过DEBUG跟踪就可以发现其中的关键,楼主是没有坚持到最后吧? 最好还是独立解决,这才能锻炼自己的 05/06 22:43
- [hzccheng] 呵呵,明白 04/28 20:50
- [assembly] 还有就是,打开两个命令窗口A、B,A安装了新的中断程序,B没有安装,AB窗口都用DEBUG的D 00 04/28 20:48
- [游客] 正确。 03/26 14:12
- [hzccheng] 是的,我也是这样认为,因为我对这个情况有点不解,所以才两个图都发出来! 03/25 16:29
- [crazyman] 嗯。对头。在command下,有时候显示内容会随着整体向上滚动。 03/25 11:27
- [crazyman] 而且在我这里,直接运行是正常的。 03/25 11:23
- [crazyman] 应该直接运行就出现一样的结果的。 03/25 11:21
- [hzccheng] 我换了一台机以后,在安装程序后加溢出代码和写程序测试都正常,估计是系统问题吧,测试不成功的系统是20 03/24 15:14
[2009-05-06 17:04] 实验16
阅读全文 |
评论次数(2) |
浏览次数(442) |
所属类型(汇编作业)
[2009-04-28 15:05] 实验15
安装一个新的INT9中断例程,功能:在DOS下,按“A”键后,除非不松开,如果松开则显示满屏“A”;其他键照常处理。
assume cs:code,ss:stack
stack segment
dw 80h dup (0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,80h
mov ax,cs
mov ds,ax
mov si,offset i9
mov ax,0
...
assume cs:code,ss:stack
stack segment
dw 80h dup (0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,80h
mov ax,cs
mov ds,ax
mov si,offset i9
mov ax,0
...
阅读全文 |
评论次数(2) |
浏览次数(493) |
所属类型(汇编作业)
[2009-03-25 16:39] 实验14
编程,以“年/月/日 时:分:秒”的格式,显示当前的日期和时间
assume cs:code,ds:data
data segment
db 9,8,7,4,2,0
db 8 dup ('/'),' ',8 dup (':') ;作缓存用
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0 ;指向向量表
mov bx,6 ;BX指向缓...
assume cs:code,ds:data
data segment
db 9,8,7,4,2,0
db 8 dup ('/'),' ',8 dup (':') ;作缓存用
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0 ;指向向量表
mov bx,6 ;BX指向缓...
阅读全文 |
评论次数(1) |
浏览次数(486) |
所属类型(汇编作业)
[2009-03-24 17:27] 实验13(2)
编写并安装int 7ch中断例程,功能为完成LOOP指令的功能
(CX)=循环次数
(BX)=位移
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset lps
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpe-offset lps
cld
rep movsb
mov ax,200h
mov es:[7ch*4],ax
mov ax,0
mov es:[7ch*4+2],ax
mov ax,4c00h
int 21h
...
(CX)=循环次数
(BX)=位移
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset lps
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpe-offset lps
cld
rep movsb
mov ax,200h
mov es:[7ch*4],ax
mov ax,0
mov es:[7ch*4+2],ax
mov ax,4c00h
int 21h
...
阅读全文 |
评论次数(3) |
浏览次数(465) |
所属类型(汇编作业)
[2009-03-24 15:30] 实验13(1)
编写并安装INT 7CH中断例程,功能为显示一个以0结束的字符串,中断例程安装在0:200处
(dh)=行号
(dl)=列号
(cl)=颜色
ds:si指向字符串
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset str0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset estr0-offset str0
cld
rep movsb ;安装中断例程
mov ax,200h ...
(dh)=行号
(dl)=列号
(cl)=颜色
ds:si指向字符串
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset str0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset estr0-offset str0
cld
rep movsb ;安装中断例程
mov ax,200h ...
阅读全文 |
评论次数(1) |
浏览次数(468) |
所属类型(汇编作业)
[2009-03-23 21:07] 实验12
编写0号中断,使得除法溢出发生时,在屏幕中意显示字符串"divide error!"
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset edo0-offset do0
cld
rep movsb ;到这里为止是安装程序
...
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset edo0-offset do0
cld
rep movsb ;到这里为止是安装程序
...
阅读全文 |
评论次数(2) |
浏览次数(498) |
所属类型(汇编作业)
[2009-03-17 09:52] 实验11
编写一个子程序,将包含任意字符,以0结尾的字符串中小写字母转变成大写字母,
assume cs:code,ds:data,ss:stack
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
stack segment
dw 8 dup (0)
stack ends
code segment
begin:mov ax,data
mov ds,ax
mov si,0
mov ax,stack
...
assume cs:code,ds:data,ss:stack
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
stack segment
dw 8 dup (0)
stack ends
code segment
begin:mov ax,data
mov ds,ax
mov si,0
mov ax,stack
...
阅读全文 |
评论次数(1) |
浏览次数(397) |
所属类型(汇编作业)
[2009-02-10 21:04] 实验10.2
不会溢出的除法
名称:divdw
功能:进行不会产生溢出的除尘,被除数为DWORD,除数为WORD,商为DWORD
参数:(AX)=被除数的低十六位
(DX)=被除数的高十六位
(CX)=除数
返回:(DX)=结果高十六位
(AX)=结果低十六位
(CX)=余数
X/N=INT(H/N)*65536+[REM(H/N)*65536+L]/N
assume cs:code,ss:stack
stack segment
dw 16 dup (0)
stack ends
...
名称:divdw
功能:进行不会产生溢出的除尘,被除数为DWORD,除数为WORD,商为DWORD
参数:(AX)=被除数的低十六位
(DX)=被除数的高十六位
(CX)=除数
返回:(DX)=结果高十六位
(AX)=结果低十六位
(CX)=余数
X/N=INT(H/N)*65536+[REM(H/N)*65536+L]/N
assume cs:code,ss:stack
stack segment
dw 16 dup (0)
stack ends
...
阅读全文 |
评论次数(1) |
浏览次数(466) |
所属类型(汇编作业)
[2009-02-10 14:56] 实验10.1
显示字符串str
名称:str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
参数:(DH)=行号,(DL)=列号,(CL)=颜色,DS:SI指向字符串的首地址
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
dw 16 dup (0)
stack ends
code segment
start:mov dh,8 ;第八行
mo...
名称:str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
参数:(DH)=行号,(DL)=列号,(CL)=颜色,DS:SI指向字符串的首地址
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
dw 16 dup (0)
stack ends
code segment
start:mov dh,8 ;第八行
mo...
阅读全文 |
评论次数(2) |
浏览次数(446) |
所属类型(汇编作业)
[2009-01-19 20:59] hzccheng事件薄之实验9灵异事件
在屏幕中意分别显示绿字,绿底红字,白底蓝字的字符串'welcome to masm!'
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
s:mov ax,data
mov ds,ax
mov bp,10h
mov ax,0b800h
...
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
s:mov ax,data
mov ds,ax
mov bp,10h
mov ax,0b800h
...
阅读全文 |
评论次数(2) |
浏览次数(450) |
所属类型(汇编作业)
『 查看更多文章 』