- [cwyctz] 我是平时在书上做了,再写上博客的。你看我前面的都有好几个星期没更新过。只不过现在一次更新而已。其实我 11/20 22:48
- [ouou] 老了,比不上你们了 一天一章,老牛拉车。 看看你,一天N章,我简直无地自容 11/20 21:35
- [younggay] 正确。 11/18 13:56
- [younggay] 冰王子的头像,呵呵。 希望博主也有冰王子一样的坚持。 共勉。 11/18 13:55
- [younggay] 功能要求实现。 11/18 13:51
- [abob] 我觉得对于第二题,能知道压入的有cs ip就很厉害了,博主继续加油啊 ^_^ 10/14 15:06
- [abob] 答案正确。 10/14 15:05
- [abob] 没问题,ds:[address]是读取数据的一个方法。 10/14 15:05
- [abob] 没问题^_^ 10/14 15:04
- [abob] 答案正确。 10/14 15:03
[2009-11-20 20:22] 检测点16.2 (第291页)
下面的程序将code段中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
...
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
...
阅读全文 |
评论次数(0) |
浏览次数(797) |
所属类型(汇编作业)
[2009-11-20 20:05] 检测点16.1(第289页)
下面的程序将code段中a处的8个数据累加,结果存储到b处的dword中,补全程序。
完整程序如下:
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...
完整程序如下:
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...
阅读全文 |
评论次数(0) |
浏览次数(810) |
所属类型(汇编作业)
[2009-11-20 19:41] 实验15 安装新的int 9中断例程 (第285页)
安装一个新的int9中断例程,功能:在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
push cs
pop ds
mov ax,0
mov es,ax
mov ...
提示:按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码=通码+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
push cs
pop ds
mov ax,0
mov es,ax
mov ...
阅读全文 |
评论次数(0) |
浏览次数(791) |
所属类型(汇编作业)
[2009-11-20 19:18] 检测点15.1 (第282页)
(1)可以精简为:
pushf
call dword ptr ds:[0]
(2)仔细分析上面程序中的主程序[第269页],看看有什么潜在的问题?
在主程序中,如果在执行设置int 9中断例程的段地址和偏移地址的指令之间发生了键盘中断,则CPU将转去一个错误的地址执行,将发生错误。
找出这样的程序段,改写它们,排除潜在的问题。
提示:注意sti和cli指令的用法。
答:潜在的问题是设置中断向量表时可能被打断,修改如下:
cli
mov word ptr es:[9*4],offset int9
mov...
pushf
call dword ptr ds:[0]
(2)仔细分析上面程序中的主程序[第269页],看看有什么潜在的问题?
在主程序中,如果在执行设置int 9中断例程的段地址和偏移地址的指令之间发生了键盘中断,则CPU将转去一个错误的地址执行,将发生错误。
找出这样的程序段,改写它们,排除潜在的问题。
提示:注意sti和cli指令的用法。
答:潜在的问题是设置中断向量表时可能被打断,修改如下:
cli
mov word ptr es:[9*4],offset int9
mov...
阅读全文 |
评论次数(0) |
浏览次数(748) |
所属类型(汇编作业)
[2009-11-20 19:04] 实验14 访问CMOS RAM (第271页)
编程:以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。
注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误。
assume cs:code,ds:data
data segment
data1 db 9,'/',8,'/',7,' ',4,':',2,':',0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,12*160+30...
注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误。
assume cs:code,ds:data
data segment
data1 db 9,'/',8,'/',7,' ',4,':',2,':',0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,12*160+30...
阅读全文 |
评论次数(2) |
浏览次数(1091) |
所属类型(汇编作业)
[2009-11-20 18:10] 检测点14.2 (第269页)
编程:用加法和移位指令计算(ax)=(ax)*10
提示:(ax)*10=(ax)*2+(ax)*8
assume cs:code
code segment
start: mov ax,2
shl ax,1 ;(ax)=(ax)*2
mov bx,ax
shr ax,1
mov cl,3
shl ax,cl ;(ax)=(ax)*8
add ax,bx ;(ax)=(ax)*10
mov ax,...
提示:(ax)*10=(ax)*2+(ax)*8
assume cs:code
code segment
start: mov ax,2
shl ax,1 ;(ax)=(ax)*2
mov bx,ax
shr ax,1
mov cl,3
shl ax,cl ;(ax)=(ax)*8
add ax,bx ;(ax)=(ax)*10
mov ax,...
阅读全文 |
评论次数(0) |
浏览次数(815) |
所属类型(汇编作业)
[2009-11-20 17:57] 检测点14.1 (第267页)
(1)编程:读取CMOS RAM的2号单元的内容。
assume cs:code
code segment
start: mov al,2 ;选择2号单元
out 70h,al ;把要访问的2号单元送到地址端口
in al,71h ;读出内容,送到al中
mov ax,4c00h
int 21h
code ends
end start
(2) 编程:向CMOS RAM的2号单元写入0。
assume cs:code
code segment
start: mov a...
assume cs:code
code segment
start: mov al,2 ;选择2号单元
out 70h,al ;把要访问的2号单元送到地址端口
in al,71h ;读出内容,送到al中
mov ax,4c00h
int 21h
code ends
end start
(2) 编程:向CMOS RAM的2号单元写入0。
assume cs:code
code segment
start: mov a...
阅读全文 |
评论次数(0) |
浏览次数(773) |
所属类型(汇编作业)
[2009-11-20 17:37] 实验13 编写、应用中断例程(3) (第263页)
(3)下面的程序,分别在屏幕的第2、4、6、8行显示四句英文诗,补全程序。
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset...
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset...
阅读全文 |
评论次数(0) |
浏览次数(785) |
所属类型(汇编作业)
[2009-11-20 17:23] 实验13 编写、应用中断例程(2) (第262页)
(2)编写并安装int 7ch中断例程,功能为完成loop指令的功能。
参数:(cx)=循环次数,(bx)=位移
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset lp
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpend -offset lp
cld
rep movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mo...
参数:(cx)=循环次数,(bx)=位移
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset lp
mov ax,0
mov es,ax
mov di,200h
mov cx,offset lpend -offset lp
cld
rep movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mo...
阅读全文 |
评论次数(0) |
浏览次数(788) |
所属类型(汇编作业)
[2009-11-20 16:43] 实验13 编写、应用中断例程 (1) (第262页)
(1)编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。
参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串首地址。
assume cs:code
data segment
db "welcome to masm!",0
data ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset show_str
mov ax,0
mov es,ax
mov di,200h
mov cx,offset show_stren...
参数:(dh)=行号,(dl)=列号,(cl)=颜色,ds:si指向字符串首地址。
assume cs:code
data segment
db "welcome to masm!",0
data ends
code segment
start: mov ax,cs
mov ds,ax
mov si,offset show_str
mov ax,0
mov es,ax
mov di,200h
mov cx,offset show_stren...
阅读全文 |
评论次数(0) |
浏览次数(753) |
所属类型(汇编作业)
『 查看更多文章 』