除了TC.EXE外,必须用到的相关文件有5个,分别是:
COS.OBJ
EMU.LIB
MATHS.LIB
GRAPHICS.LIB
CS.LIB...
[2013-04-25 10:08] 研究试验1 搭建一个精简的C语言开发环境
阅读全文 |
评论次数(0) |
浏览次数(786) |
所属类型(汇编作业)
[2013-04-24 21:20] 课程设计2
assume cs:code
code segment
start: jmp short install
;; diska db 'Congratulations To Write Disk Success!!!',0
;diskb db 'Sorry Write Disk Failure!!!',0
;---------------安装程序----------------
;安装程序: 将代码写入A盘0面0道1扇区开始的扇区内.
;操作成功: (ah)=0,(al)=写入的扇区数...
code segment
start: jmp short install
;; diska db 'Congratulations To Write Disk Success!!!',0
;diskb db 'Sorry Write Disk Failure!!!',0
;---------------安装程序----------------
;安装程序: 将代码写入A盘0面0道1扇区开始的扇区内.
;操作成功: (ah)=0,(al)=写入的扇区数...
阅读全文 |
评论次数(0) |
浏览次数(695) |
所属类型(汇编作业)
[2013-04-12 14:26] 实验17
;安装INT7CH中断例程,实现通过逻辑扇区号对软盘进行读写
;参数:1)用AH传递功能号:0表示读,1表示写;
; 2)用DX传递读写的扇区的逻辑扇区号;
; 3)用ES:BX指向存储读出数据或写入数据的内存区;
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
mov di,0200h
mov cx,offset int7cend - offset ...
;参数:1)用AH传递功能号:0表示读,1表示写;
; 2)用DX传递读写的扇区的逻辑扇区号;
; 3)用ES:BX指向存储读出数据或写入数据的内存区;
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
mov di,0200h
mov cx,offset int7cend - offset ...
阅读全文 |
评论次数(0) |
浏览次数(638) |
所属类型(汇编作业)
[2013-04-10 16:47] 实验16
;程序1
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset setscreen
mov ax,0
mov es,ax
mov di,200h
mov cx,offset screenend - offset setscreen
cld
rep movsb
;以上为安装程序
cli
mov word ptr es:[7ch*4],0
mov word ptr es:[7ch*4+2],20...
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset setscreen
mov ax,0
mov es,ax
mov di,200h
mov cx,offset screenend - offset setscreen
cld
rep movsb
;以上为安装程序
cli
mov word ptr es:[7ch*4],0
mov word ptr es:[7ch*4+2],20...
阅读全文 |
评论次数(0) |
浏览次数(657) |
所属类型(汇编作业)
[2013-04-07 17:17] 检测点16.2
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 start...
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 start...
阅读全文 |
评论次数(0) |
浏览次数(628) |
所属类型(汇编作业)
[2013-04-07 16:59] 检测点16.1
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,ax
adc word ptr b[2],0
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start...
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,ax
adc word ptr b[2],0
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start...
阅读全文 |
评论次数(0) |
浏览次数(653) |
所属类型(汇编作业)
[2013-04-05 17:28] 实验15
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,code
mov ds,ax
mov ax,0
mov es,ax
mov si,offset int9
mov di,0204h
mov cx,offset int9end - offset int9
cld
...
stack segment
db 128 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,128
mov ax,code
mov ds,ax
mov ax,0
mov es,ax
mov si,offset int9
mov di,0204h
mov cx,offset int9end - offset int9
cld
...
阅读全文 |
评论次数(0) |
浏览次数(201) |
所属类型(汇编作业)
[2013-04-05 15:35] 检测点15.1
(1)仔细分析一下上面的int 9中断例程,看看是否可以精简一下?
其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要再进行设置可。对于程序段:
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令。
(2)仔细分析上面程序中的主程序[第269页],看看有什么潜在的问题?
在主程序中,如果在执行设置int ...
其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已经置0,没有必要再进行设置可。对于程序段:
pushf
pushf
pop ax
and ah,11111100b
push ax
popf
call dword ptr ds:[0]
可以精简为:
pushf
call dword ptr ds:[0]
两条指令。
(2)仔细分析上面程序中的主程序[第269页],看看有什么潜在的问题?
在主程序中,如果在执行设置int ...
阅读全文 |
评论次数(0) |
浏览次数(200) |
所属类型(汇编作业)
[2013-03-30 21:22] 实验14访问CMOS RAM
编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间
assume cs:code
code segment
time: db "yy/mm/dd hh:ss:mm","$"
cmos: db 9,8,7,4,2,0
start: mov ax,cs
mov ds,ax
mov bx,offset time
mov si,offset cmos
mov cx,6
s: push cx
mov al,[si]
out 70h,al
in al,71h
mov ah,al
...
assume cs:code
code segment
time: db "yy/mm/dd hh:ss:mm","$"
cmos: db 9,8,7,4,2,0
start: mov ax,cs
mov ds,ax
mov bx,offset time
mov si,offset cmos
mov cx,6
s: push cx
mov al,[si]
out 70h,al
in al,71h
mov ah,al
...
阅读全文 |
评论次数(0) |
浏览次数(231) |
所属类型(汇编作业)
[2013-03-30 16:56] 检测点14.2
;编程,和加法和移位指令计算(AX)=(AX)*10.
;(AX)*10=(AX)*8+(AX)*2
assume cs:code
code segment
start: mov ax,8;假设AX中内容为8.
mov bx,ax
shl bx,1 ;左移一位相当于执行(BX)=(BX)*2,即执行后(BX)= (AX)*2
mov cl,3 ;如果移动位数大于1时,必须将移动位数放在CL中。
shl ax,cl ;移动3位,相当于(AX)=(AX)*2*3=(AX)*8
add ax,bx
mov ax,4c...
;(AX)*10=(AX)*8+(AX)*2
assume cs:code
code segment
start: mov ax,8;假设AX中内容为8.
mov bx,ax
shl bx,1 ;左移一位相当于执行(BX)=(BX)*2,即执行后(BX)= (AX)*2
mov cl,3 ;如果移动位数大于1时,必须将移动位数放在CL中。
shl ax,cl ;移动3位,相当于(AX)=(AX)*2*3=(AX)*8
add ax,bx
mov ax,4c...
阅读全文 |
评论次数(0) |
浏览次数(238) |
所属类型(汇编作业)