2012.5.23经dxiaolin的提示,在标号int7ch之前加了一句“org 200h”。问题终于得到解决。org 200h的作用是使编译器将紧跟它之后的语句段的起始地址(偏移地址)变为200H,直到再次遇到ORG语句。
2012.5.22经测试,效果都正确,惟一不解的是有两句指令不明白。
mov word ptr es:[7ch*4],offset int7ch
mov word ptr es:[7ch*4+2],cs ;将安装地址加入中断向量表
中断安装在0:200H处,不知道为什么这两句换成下面这样就通不过?
mov word ptr es:[7ch*4],200H...


- [fpamc] 共勉……同达…… 06/03 20:16
- [yahwei] 我相信你会达成你梦想,坚信! 06/03 20:14
- [fpamc] 呵呵,我们这下雷阵冰雹雨了…… 我呢,也接触过按键精灵,但是呢,没有坚持下来反而被游戏拉了进去 06/03 14:43
- [yahwei] 不用ORG还是搞不定啊,zhujinwc师兄……call word ptr table[bx]应该改 05/25 13:43
- [zhujinwu] 楼主的程序中有3个地方需要修改一下: 1、在设置中断向量的时候,没有用“org 200h”的时候, 05/24 22:04
- [fpamc] 花了我12个小时…… 呵呵,谢谢支持哈!~O(∩_∩)O 05/24 13:30
- [yahwei] 你也完成第十六章了啊,效率很高哦,我蛮喜欢看你总结的笔记,呵呵。 05/24 13:16
- [fpamc] 哇咔咔~串了个门@(一-一)@ 05/24 07:43
- [dxiaolin] 顶顶更健康 05/23 21:20
- [dxiaolin] 回复不显示图片 http://www.asmedu.net/blog/user/bigimg.js 05/23 12:57
- [gnunix] 一起战斗!坚持到最后,加油! 05/12 18:24
[2012-05-22 00:14] 实验题:第十六章 实验十六(有疑惑,待解决)[已解决]
阅读全文 |
评论次数(16) |
浏览次数(1188) |
所属类型(汇编作业)
[2012-05-14 22:06] 交作业:P291 检测点16.2
下面的程序将DATA段中A处的8个数据累加,结果存储到B处的字中,补全程序。
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start:
________mov ax,data
________mov es,ax
mov si,0
mov cx,8
s:
mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ax,4c00h
int 21h ...
assume cs:code,es:data
data segment
a db 1,2,3,4,5,6,7,8
b dw 0
data ends
code segment
start:
________mov ax,data
________mov es,ax
mov si,0
mov cx,8
s:
mov al,a[si]
mov ah,0
add b,ax
inc si
loop s
mov ax,4c00h
int 21h ...
阅读全文 |
评论次数(3) |
浏览次数(694) |
所属类型(汇编作业)
[2012-05-14 21:53] 交作业:P289 检测点16.1
下面的程序将CODE段中A处的8个数据累加,结果存储到B处的双字中,补全程序。
assume cs:code
code segment
a dw 1,2,3,4,5,6,7,8
b dd 0
start:mov si,0
mov cx,8
s:mov ax,___a[si]
add ____word ptr b[0],ax
adc ____word ptr b[2],0
add si,__2
loop s
mov ax,4c00h
int 21h
code ends
end start...
assume cs:code
code segment
a dw 1,2,3,4,5,6,7,8
b dd 0
start:mov si,0
mov cx,8
s:mov ax,___a[si]
add ____word ptr b[0],ax
adc ____word ptr b[2],0
add si,__2
loop s
mov ax,4c00h
int 21h
code ends
end start...
阅读全文 |
评论次数(1) |
浏览次数(644) |
所属类型(汇编作业)
[2012-05-14 21:21] 实验题:第十五章 实验十五
;安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”;其他键照常处理。
;提示,按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码=通码+80H
assume cs:code,ss:stack
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128 ;设置堆栈段
mov ax,cs
mov ds,ax
mov si,offset ...
;提示,按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码=通码+80H
assume cs:code,ss:stack
stack segment
db 128 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128 ;设置堆栈段
mov ax,cs
mov ds,ax
mov si,offset ...
阅读全文 |
评论次数(9) |
浏览次数(716) |
所属类型(汇编作业)
[2012-05-12 17:38] 交作业:P282 检测点15.1
;根据(1)和(2)小题的要求修改后的程序如下:
assume cs:code
stack segment
db 128 dup (0)
stack ends
data segment
dw 0,0
data ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
mov ax,data
mov ds,ax
mov ax,0
mov es,ax
push es:[9*4]
pop ds:[0]
push es:[9*4+2]
pop ds:[2...
assume cs:code
stack segment
db 128 dup (0)
stack ends
data segment
dw 0,0
data ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
mov ax,data
mov ds,ax
mov ax,0
mov es,ax
push es:[9*4]
pop ds:[0]
push es:[9*4+2]
pop ds:[2...
阅读全文 |
评论次数(6) |
浏览次数(743) |
所属类型(汇编作业)
[2012-05-12 15:57] 小记一则
第十五章还没看完,试着做了下检测题,一次通过。发现现在的题目已经不能完全达到检测的目的了啊,主要是题目太少了。还得靠自己找题目来做啊……...
阅读全文 |
评论次数(6) |
浏览次数(738) |
所属类型(汇编作业)
[2012-05-11 21:25] 实验十四,关于显示完整日期……
通过改变系统时间,多查看几次就可以发现年份信息的头两位在50单元和114单元中保存(可以看到0单元和60单元均保存有秒的信息,后接分时日月年)。找到年份单元的高两位,把它显示出来就简单得多了。
有个小插曲,我为了找到年份信息的高两位,把系统日期改成了1985年,完成后忘记改回来了,结果害得我好多软件出错,差点要重装系统了,呵呵。
;显示CMOS前128个单元的内容
assume cs:code
code segment
mov ax,0b800h
mov es,ax
mov di,160*3 ;从第三行第0列开始显示
mov cx,128
mov si,...
有个小插曲,我为了找到年份信息的高两位,把系统日期改成了1985年,完成后忘记改回来了,结果害得我好多软件出错,差点要重装系统了,呵呵。
;显示CMOS前128个单元的内容
assume cs:code
code segment
mov ax,0b800h
mov es,ax
mov di,160*3 ;从第三行第0列开始显示
mov cx,128
mov si,...
阅读全文 |
评论次数(4) |
浏览次数(680) |
所属类型(汇编作业)
[2012-05-10 23:24] 实验题:第十四章 实验14(显示完整日期)
;编程,以“年/月/日 时:分:秒”的格式,显示当前的日期,时间。
assume cs:code
code segment
s1: db "????/??/?? ??:??:??$" ;定义日期时间显示格式
s2: db 50,9,8,7,4,2,0
start:
mov ax,code
mov ds,ax
mov bx,offset s1
mov si,offset s2
mov al,[si] ;将50单元地址送入al
out 70h,al
in al,71h ;读出50单元中的内容
call dtoc ;将数字转化为字符并送入DS:BX...
assume cs:code
code segment
s1: db "????/??/?? ??:??:??$" ;定义日期时间显示格式
s2: db 50,9,8,7,4,2,0
start:
mov ax,code
mov ds,ax
mov bx,offset s1
mov si,offset s2
mov al,[si] ;将50单元地址送入al
out 70h,al
in al,71h ;读出50单元中的内容
call dtoc ;将数字转化为字符并送入DS:BX...
阅读全文 |
评论次数(1) |
浏览次数(222) |
所属类型(汇编作业)
[2012-05-10 21:41] 交作业:P269 检测点14.2
编程,用加法和移位指令计算(ax)=(ax)*10。
提示,(ax)*10=(ax)*2+(ax)*8。
assume cs:code
code segment
mov ax,63h ;举例(ax)=63h
shl ax,1 ;左移1位
mov dx,ax ;将左移1位的值暂存至dx
mov cl,2
shl ax,cl ;再左移2位(共移3位)
adc ax,dx ;将左移1位和左移3位的值进行带进位加法运算
mov ax,4c00h
int 21h
code ends
end...
提示,(ax)*10=(ax)*2+(ax)*8。
assume cs:code
code segment
mov ax,63h ;举例(ax)=63h
shl ax,1 ;左移1位
mov dx,ax ;将左移1位的值暂存至dx
mov cl,2
shl ax,cl ;再左移2位(共移3位)
adc ax,dx ;将左移1位和左移3位的值进行带进位加法运算
mov ax,4c00h
int 21h
code ends
end...
阅读全文 |
评论次数(1) |
浏览次数(214) |
所属类型(汇编作业)
[2012-05-10 21:36] 交作业:P267 检测点14.1
(1)编程,读取CMOS RAM的2号单元的内容。
assume cs:code
code segment
mov al,2
out 70h,al ;将单元地址送入70h端口
in al,71h ;将71h端口中的内容送入al
mov ax,4c00h
int 21h
code ends
end
(2)编程,向CMOS RAM的2号单元写入0
assume cs:code
code segment
mov al,2
out 70h,al ;将单元地址送入70h端口
mov al,0
out 71h,al ;将数据0...
assume cs:code
code segment
mov al,2
out 70h,al ;将单元地址送入70h端口
in al,71h ;将71h端口中的内容送入al
mov ax,4c00h
int 21h
code ends
end
(2)编程,向CMOS RAM的2号单元写入0
assume cs:code
code segment
mov al,2
out 70h,al ;将单元地址送入70h端口
mov al,0
out 71h,al ;将数据0...
阅读全文 |
评论次数(1) |
浏览次数(213) |
所属类型(汇编作业)