;************安装程序部分*************
assume cs:setup
setup segment
start:
mov al,1
mov ah,3
mov ch,0
mov cl,1
mov dh,0
mov dl,0
mov bx,boot
mov es,bx
sub bx,bx
int 13h
mov ax,offset sizeof_main_end
mov cl,9
shr ax,cl
inc al
mov ah,3
mov ch,0
mov cl,2
mov dh,0
...
- [theguiking] 题目没说计算机启动后执行的第一个int 19中断例程是由DOS提供的。所以操作系统加载后对int 1 02/03 20:25
- [游客] 嗯。 02/03 13:32
- [游客] (2) int 19h 中断例程,可以由DOS提供 ================== 第二题 02/03 13:31
- [theguiking] 谢谢 02/03 12:55
- [theguiking] 但是诸如 mov ds:[100],ax的代码为何能通过呢? 02/03 12:54
- [younggay] 不错。继续加油。 02/02 17:51
- [younggay] 编译不通过,不通过的原因 mov ds:[offset int9_data],ax mov 02/02 17:47
- [younggay] add __a[si+18]__,ax adc __a[si+16]__,0 --- 02/02 17:31
- [younggay] 正确。 02/02 17:29
- [younggay] 我不知道怎么用虚拟机模拟软盘 --------- 去博客里面搜寻或者百度吧。 那个模拟软盘的好 02/02 16:17
[2009-02-01 03:40] 课程设计2 完成
阅读全文 |
评论次数(2) |
浏览次数(803) |
所属类型(汇编作业)
[2009-01-29 17:41] 检测点 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
code ends
end ...
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
code ends
end ...
阅读全文 |
评论次数(1) |
浏览次数(795) |
所属类型(汇编作业)
[2009-01-29 17:28] 检测点 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 __a[si+18]__,ax
adc __a[si+16]__,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 __a[si+18]__,ax
adc __a[si+16]__,0
add si,__2__
loop s
mov ax,4c00h
int 21h
code ends
end start...
阅读全文 |
评论次数(1) |
浏览次数(765) |
所属类型(汇编作业)
[2009-01-28 22:07] 试验 15 有疑惑
assume cs:main
stack segment
db 30h dup (0)
stack ends
main segment
start:
mov ax,stack
mov ss,ax
mov sp,30h
mov ax,cs
mov ds,ax
mov si,offset int9
mov ax,0
mov es,ax
mov di,200h
mov ax,es:[9*4]
mov ds:[offset int9_data],ax
mov ax,es:[9*4+2]
mov ds:...
stack segment
db 30h dup (0)
stack ends
main segment
start:
mov ax,stack
mov ss,ax
mov sp,30h
mov ax,cs
mov ds,ax
mov si,offset int9
mov ax,0
mov es,ax
mov di,200h
mov ax,es:[9*4]
mov ds:[offset int9_data],ax
mov ax,es:[9*4+2]
mov ds:...
阅读全文 |
评论次数(2) |
浏览次数(789) |
所属类型(汇编作业)
[2009-01-28 20:22] 检测点15.1
(1) 仔细分析一下上面的int9中断例程,看看是否可以精简一下?
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令。
(2) 仔细分析上面程序中的主程序,看看有什么潜在的问题?
问题源1:
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
修正1:
cli
mov word ptr es:[9*4],offse...
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令。
(2) 仔细分析上面程序中的主程序,看看有什么潜在的问题?
问题源1:
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
修正1:
cli
mov word ptr es:[9*4],offse...
阅读全文 |
评论次数(1) |
浏览次数(732) |
所属类型(汇编作业)
[2009-01-22 19:56] 实验 14
assume cs:main
stack segment
db 10h dup (0)
stack ends
main segment
start:
mov ax,0B800h
mov ds,ax
mov si, 1920 + 62
mov di,offset data
mov ax,stack
mov ss,ax
mov sp,10h
mov cx,6
print: push cx
mov al,cs:[di]
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr...
stack segment
db 10h dup (0)
stack ends
main segment
start:
mov ax,0B800h
mov ds,ax
mov si, 1920 + 62
mov di,offset data
mov ax,stack
mov ss,ax
mov sp,10h
mov cx,6
print: push cx
mov al,cs:[di]
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr...
阅读全文 |
评论次数(2) |
浏览次数(557) |
所属类型(汇编作业)
[2009-01-22 18:29] 检测点 14.2
编程:用加法和移位指令计算(ax)=(ax)*10
mov dx,ax
mov cl,3
shl ax,cl
shl dx,1
add ax,dx...
mov dx,ax
mov cl,3
shl ax,cl
shl dx,1
add ax,dx...
阅读全文 |
评论次数(1) |
浏览次数(642) |
所属类型(汇编作业)
[2009-01-22 18:17] 检测点 14.1
(1) 编程,读取CMOS RAM的2号单元的内容。
mov al,2
out 70h,al
in al,71h
(2) 编程,向CMOS RAM的2号单元写入0。
mov al,2
out 70h,al
sub al,al
out 71h,al...
mov al,2
out 70h,al
in al,71h
(2) 编程,向CMOS RAM的2号单元写入0。
mov al,2
out 70h,al
sub al,al
out 71h,al...
阅读全文 |
评论次数(2) |
浏览次数(795) |
所属类型(汇编作业)
[2009-01-22 16:51] 检测点 13.2
判断下面说法的正误:
(1) 我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。
错,FFFF:0 处的指令都是固化在ROM中的,并不是在内存中的,所以我们无法通过编程改变它。
(2) int 19h 中断例程,可以由DOS提供。
对,DOS可以对int 19h 中断例程重定义,但是在开机后第一次使用的int 19h 中断例程,并不是来自于内存,而是在ROM中,所以DOS不能影响开机后第一次执行的int 19h的中断例程。...
(1) 我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。
错,FFFF:0 处的指令都是固化在ROM中的,并不是在内存中的,所以我们无法通过编程改变它。
(2) int 19h 中断例程,可以由DOS提供。
对,DOS可以对int 19h 中断例程重定义,但是在开机后第一次使用的int 19h 中断例程,并不是来自于内存,而是在ROM中,所以DOS不能影响开机后第一次执行的int 19h的中断例程。...
阅读全文 |
评论次数(3) |
浏览次数(979) |
所属类型(汇编作业)
[2009-01-22 16:31] 检测点 13.1
(1) 在上面的内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?
-32768 ~ 32767
(2) 用7ch中断例程完成jmp near prt s 指令的功能,用bx向中断例程传送转移位移。
应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。
assume cs:code
data segment
db 'conversation',0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ax,0b8...
-32768 ~ 32767
(2) 用7ch中断例程完成jmp near prt s 指令的功能,用bx向中断例程传送转移位移。
应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。
assume cs:code
data segment
db 'conversation',0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov ax,0b8...
阅读全文 |
评论次数(1) |
浏览次数(570) |
所属类型(汇编作业)
『 查看更多文章 』