当然这个程序只是验证如何处理0号中断的。如果单独执行程序后,再进行相应的除法举出操作将会出错,因为程序开辟的内存空间会被回收,这样就会把do0的程序破坏掉。
assume cs:code
data segment
db 100 dup (0)
data ends
code segment
start:mov ax,data
mov es,ax
mov di,0
mov ax,code
mov ds,ax
mov si,offset do0
...


- [jall] 他只是讲解,做个例子,实际上任何地址或者寄存器在使用前都需要确保没有程序在占用,覆盖数据的后果难以想 10/03 02:25
- [wsb200514] 哈哈,确实。看题目的意思ax里面肯定是有数据的,不然不会push它,既然有数据就不应该用ax去做数据 05/25 16:55
- [bluestorm80] 后来说这个闪烁的光标是显卡实现的。具体如何实现的,就先不管那么多了 11/23 17:08
- [younggay] en .... 11/18 14:17
- [younggay] 嗯。博主的思路都很合理。最后一种的思路很灵活,有味道。 11/18 13:32
- [scuzg] 结果很正确嘛! 视为无符号数,10-11不够减则借1位,被减数成了260,则: 260-11=2 11/05 13:39
- [tinyparticle] 程序完成 10/18 12:29
- [tinyparticle] 测试正确 10/15 18:00
- [bluestorm80] 正像前面研究的那样,栈是一种很重要的技术。在里面保存着下一条要执行的指令,至少目前我是这么看的。所以 10/15 06:54
- [scuzg] 执行loop语句时,IP值已经指向loop之下的那一条指令了。如果cx=0,那么CPU将读取当前IP 10/11 16:15
[2009-11-01 21:19] 实验12 编写0号中断的处理程序
阅读全文 |
评论次数(0) |
浏览次数(245) |
所属类型(汇编作业)
[2009-11-01 08:43] 实验11 将小写字母转换成大写字母
assume cs:code
data segment
db "Beginner's All-purose Symbolic Instruction Code.",0
data ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
s:cmp byte ptr [si],00h
je over
cmp byte ptr [si],61h
jb next
cmp byte ptr [si],7ah
...
data segment
db "Beginner's All-purose Symbolic Instruction Code.",0
data ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
s:cmp byte ptr [si],00h
je over
cmp byte ptr [si],61h
jb next
cmp byte ptr [si],7ah
...
阅读全文 |
评论次数(0) |
浏览次数(225) |
所属类型(汇编作业)
[2009-10-29 16:22] 作业10.2 无溢出除法
assume cs:code
code segment
start:mov dx,42h
mov ax,23h
mov cx,07h
call divdw
mov ax,4c00h
int 21h
divdw:dw 0
push ax
mov ax,dx
mov dx,00h
jcxz judge
div cx
mov si, offset divdw
mov cs:[si],ax
pop ax
...
code segment
start:mov dx,42h
mov ax,23h
mov cx,07h
call divdw
mov ax,4c00h
int 21h
divdw:dw 0
push ax
mov ax,dx
mov dx,00h
jcxz judge
div cx
mov si, offset divdw
mov cs:[si],ax
pop ax
...
阅读全文 |
评论次数(0) |
浏览次数(209) |
所属类型(汇编作业)
[2009-10-28 20:28] 作业10.3 纯DOS下完成
这个是在纯DOS系统下编辑,编译,测试通过的。在虚拟机下面有问题的。
assume cs:code,ss:stack
data segment
dw 12666,123,1,8,3,38
data ends
stack segment
dw 20 dup (0)
stack ends
string segment
db 50 dup (0)
string ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
mov ax,stack
...
assume cs:code,ss:stack
data segment
dw 12666,123,1,8,3,38
data ends
stack segment
dw 20 dup (0)
stack ends
string segment
db 50 dup (0)
string ends
code segment
start:mov ax,data
mov ds,ax
mov si,0
mov ax,stack
...
阅读全文 |
评论次数(0) |
浏览次数(303) |
所属类型(汇编作业)
[2009-10-25 20:15] 实验10.1
看了题目第一遍写的,还没有优化:
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
mov di,0
mov ax,...
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start:mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
mov di,0
mov ax,...
阅读全文 |
评论次数(0) |
浏览次数(239) |
所属类型(汇编作业)
[2009-10-22 21:53] 检测点10.5
将代码改写成如下,可以观察到实际的执行结果:
为什么用DEBUG单步跟踪的结果不一样呢。估计是DEBUG的中断作用影响了程序的执行,明天先研究一下中断。
assume cs:code
stack segment
dw 8 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0eh]
inc ax
in...
为什么用DEBUG单步跟踪的结果不一样呢。估计是DEBUG的中断作用影响了程序的执行,明天先研究一下中断。
assume cs:code
stack segment
dw 8 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0eh]
inc ax
in...
阅读全文 |
评论次数(0) |
浏览次数(265) |
所属类型(汇编作业)
[2009-10-18 09:22] 实验9 在屏幕上显示不同格式的字符
assume cs:codesg,ds:datasg
clearsg segment
dw 1840 dup (0720h)
clearsg ends
datasg segment
db 'Welcome to Masm!'
datasg ends
codesg segment
start: mov ax,clearsg
mov ds,ax
mov ax,0b800h
mov es,ax
mov cx,1840
mov bx,0
a: mov ax,[bx]
mov es:[bx],ax
add bx,2
loo...
clearsg segment
dw 1840 dup (0720h)
clearsg ends
datasg segment
db 'Welcome to Masm!'
datasg ends
codesg segment
start: mov ax,clearsg
mov ds,ax
mov ax,0b800h
mov es,ax
mov cx,1840
mov bx,0
a: mov ax,[bx]
mov es:[bx],ax
add bx,2
loo...
阅读全文 |
评论次数(1) |
浏览次数(460) |
所属类型(汇编作业)
[2009-10-17 08:59] 奇怪的程序
assume cs:codesg
codesg segment
mov ax,04cch
int 021h
start: mov ax,0
s: nop
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0: jmp short s
s1: mov ax,0
int 2...
codesg segment
mov ax,04cch
int 021h
start: mov ax,0
s: nop
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0: jmp short s
s1: mov ax,0
int 2...
阅读全文 |
评论次数(0) |
浏览次数(274) |
所属类型(汇编作业)
[2009-10-16 20:51] 实验7
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065, 97479,140417,197514
dd 345980,590827,803530,1...
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065, 97479,140417,197514
dd 345980,590827,803530,1...
阅读全文 |
评论次数(0) |
浏览次数(213) |
所属类型(汇编作业)
[2009-10-15 16:02] 实验6 将前4个字母改成大写
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
mov b...
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:mov ax,datasg
mov ds,ax
mov b...
阅读全文 |
评论次数(1) |
浏览次数(366) |
所属类型(汇编作业)