本章在用int 7ch实现loop指令功能时候,所用的参数为cx:循环次数,bx:loop指令的转移位移值。实际应用里, cx的值可以在应用程序里较为方便的给出,而bx的值却需要用表达式表示,而且为了可以表达,也需要在循环指令段后加一个无实际含义的"s1:nop"之类的指令,以使得可以将bx表达为"offset s-offset s1"。其实,稍微想一下,便可以知道,通过int 7ch实现loop的实际点在于在循环未结束时候将cs:ip指向循环指令段首地址,即s处。
因此,设置入口参数为bx=offset s.
安装程序:
------------------------------...
- [wu136626] 学习了! mov bp,sp mov [bp+2],bx 改栈内值的方法我没想到 谢 08/31 16:37
- [blackberry] 我咋就没想到这种方式呢。唉! 07/28 10:14
- [mywiil] 好! 博主学的够灵活,学习了。 07/28 09:51
- [tsembrace] 非常感谢younggay的热心指点,但应该是我境界还浅,有些问题还不是很能理解。 其中第一问,po 07/22 15:58
- [younggay] 程序测试了一下,正常。 07/22 08:49
- [younggay] .在mov ss,ax执行后不立即中断,继续执行mov bx,2后再转入单步中断,紧接着,pushf 07/22 08:45
- [younggay] 4、与上述2对应的,在cpu转向执行中断程序前,它至少还有以下工作需要完成:pushf,push c 07/22 08:39
- [younggay] 本处问题中的4号按我理解应该有误,应为3号。 ============ 你说的对。那是第一版《汇 07/22 08:38
- [游客] 不错。加油。 07/20 09:31
- [游客] 两个循环让代码开起来很有逻辑性。不错! 07/20 09:30
- [891204dh] 看了看 你好像很不错 ,不过都是我还没学到的章节,不怕,我会努力的追上你的! 08/02 20:26
[2009-07-27 21:38] 第十三章(实验十三)中断例程对loop功能实现的简单变通
阅读全文 |
评论次数(4) |
浏览次数(1652) |
所属类型(汇编作业)
[2009-07-22 03:55] 十二章的学习记录
一、学习过程中的问题
1、监测点12.1中所问4号中断对应的中断程序入口地址。
中断号起始为0,依次逐加为序。本处问题中的4号按我理解应该有误,应为3号。
2、12.5节中提到的中断处理程序的编写的常规的步骤:
保存用到的寄存器——>处理中断——>恢复用到的寄存器——>用
iret指令返回。
这里所说的“常规步骤”的理解:对于0号中断,对应为除法溢出。而除法溢出最终会直接返回dos,即0号中断程序的结尾必定是“mov
ax,4c00h/int 21h。而如上所说的常规的步骤对于1号单步中断是否适用呢?那就去debug一下吧。
参照附图,先用d 0...
1、监测点12.1中所问4号中断对应的中断程序入口地址。
中断号起始为0,依次逐加为序。本处问题中的4号按我理解应该有误,应为3号。
2、12.5节中提到的中断处理程序的编写的常规的步骤:
保存用到的寄存器——>处理中断——>恢复用到的寄存器——>用
iret指令返回。
这里所说的“常规步骤”的理解:对于0号中断,对应为除法溢出。而除法溢出最终会直接返回dos,即0号中断程序的结尾必定是“mov
ax,4c00h/int 21h。而如上所说的常规的步骤对于1号单步中断是否适用呢?那就去debug一下吧。
参照附图,先用d 0...
阅读全文 |
评论次数(5) |
浏览次数(898) |
所属类型(汇编作业)
[2009-07-19 17:36] 实验十一
assume cs:codesg
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
codesg segment
start:
mov ax,data
mov ds,ax
mov bx,0
call letterc
mov ax,4c00H
int 21H
letterc:
mov al,byte ptr ds:[bx]
add al,0
je ok
cmp al,61H
jb s0 ...
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
codesg segment
start:
mov ax,data
mov ds,ax
mov bx,0
call letterc
mov ax,4c00H
int 21H
letterc:
mov al,byte ptr ds:[bx]
add al,0
je ok
cmp al,61H
jb s0 ...
阅读全文 |
评论次数(1) |
浏览次数(590) |
所属类型(汇编作业)
[2009-07-19 17:36] 实验九
assume cs:codesg
data segment
db 'welcome to masm!'
db 0ah,24h,71h
data ends
stack segment
db 32 dup('0')
stack ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h ;显示区域段地址
mov es,ax
mov bx,0 ;原始字符计数器
mov bp,0720h ;显示区域起始偏移地址
...
data segment
db 'welcome to masm!'
db 0ah,24h,71h
data ends
stack segment
db 32 dup('0')
stack ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h ;显示区域段地址
mov es,ax
mov bx,0 ;原始字符计数器
mov bp,0720h ;显示区域起始偏移地址
...
阅读全文 |
评论次数(1) |
浏览次数(754) |
所属类型(汇编作业)
[2009-07-19 17:35] 实验七
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994'
db '1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,184...
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994'
db '1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,184...
阅读全文 |
评论次数(1) |
浏览次数(747) |
所属类型(汇编作业)
[2009-07-16 20:53] 课程设计一
assume cs:codesg
datayear segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994'
db '1995'
datayear ends
dataincome segment
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,19751...
datayear segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
db '1985','1986','1987','1988','1989','1990','1991','1992','1993','1994'
db '1995'
datayear ends
dataincome segment
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,19751...
阅读全文 |
评论次数(2) |
浏览次数(616) |
所属类型(汇编设计)