3个关键点:
1:编译器对table[bx]的解析为cs:table[bx]
2:中断7CH例程代码放在code段的开始,code段与CS关联
3:0000:0200 == 0020:0000;所以在代码中不采用常用的0000:0200,而是用0020:0000。
解释:
1:table[bx] ---> cs:table[bx]是因为语句table dw sub1, sub2, sub3, sub4出现在code段,所以被编译为cs:table[bx]
2: 之所以要放在code段开始,是因为中断被调用后,CS:IP指向中断例程的第一条语句,此时table...
- [csusuntao] 这个我刚才测试过了,好像边界也没问题。 请问您是建议我测试,还是说有问题存在?多谢! 02/04 21:49
- [游客] 黑盒子测试,测试边界,如0行0列 ^_^ 02/03 11:03
[2010-03-06 21:55] 实验16 编写包含多个子程序的中断例程(简洁的直接定址)
阅读全文 |
评论次数(0) |
浏览次数(470) |
所属类型(汇编作业)
[2010-03-03 22:30] 16 包含多个功能子程序的终端例程(非直接定址)
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax, stack
mov ss, ax
mov sp, 128
; ds = cs
push cs
pop ds
; es = 0000H
mov ax, 0
mov es, ax
; 将新的int7c中断代码拷贝到0000:0204处
; source = ds:si...
stack segment
db 128 dup(0)
stack ends
code segment
start:
mov ax, stack
mov ss, ax
mov sp, 128
; ds = cs
push cs
pop ds
; es = 0000H
mov ax, 0
mov es, ax
; 将新的int7c中断代码拷贝到0000:0204处
; source = ds:si...
阅读全文 |
评论次数(0) |
浏览次数(473) |
所属类型(汇编作业)
[2010-03-03 22:29] 16 包含多个功能子程序的终端例程(直接定址)
assume cs:code
stack segment
db 128 dup(0)
stack ends
code segment
int7c_start:
jmp short set
table dw sub1, sub2, sub3, sub4
set:
push bx
cmp ah, 3
ja set_return
mov bl, ah
mov bh, 0
add bx, bx
...
stack segment
db 128 dup(0)
stack ends
code segment
int7c_start:
jmp short set
table dw sub1, sub2, sub3, sub4
set:
push bx
cmp ah, 3
ja set_return
mov bl, ah
mov bh, 0
add bx, bx
...
阅读全文 |
评论次数(0) |
浏览次数(442) |
所属类型(汇编作业)
[2010-03-03 20:38] 16.4 程序入口地址的直接定址表
assume cs:code
code segment
start:
; 清屏
;mov ah, 0
;call setscreen
; 设置前景色
;mov ah, 1
;mov al, 4
;call setscreen
; 设置背景色
;mov ah, 2
;mov al, 1
;call setscreen
; 向上滚动一行
mov ah, 3
call setscreen
...
code segment
start:
; 清屏
;mov ah, 0
;call setscreen
; 设置前景色
;mov ah, 1
;mov al, 4
;call setscreen
; 设置背景色
;mov ah, 2
;mov al, 1
;call setscreen
; 向上滚动一行
mov ah, 3
call setscreen
...
阅读全文 |
评论次数(0) |
浏览次数(452) |
所属类型(汇编作业)
[2010-03-02 21:35] 实验15 安装新的int 9中断例程
; 根据书中例子改写,相对容易,故没有相关注释
assume cs:code
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 si, offset int9_start
mov di, 204h
mov cx...
assume cs:code
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 si, offset int9_start
mov di, 204h
mov cx...
阅读全文 |
评论次数(0) |
浏览次数(489) |
所属类型(汇编作业)
[2010-02-28 23:03] 实验14 访问CMOS RAM
assume cs:code
data segment
db 9,8,7,4,2,0
db '// ::'
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start:
; 数据段
mov ax, data
mov ds, ax
mov si, 0
; 栈段
mov ax, stack
mov ss, ax
mov sp, 16
; 屏幕输出位置
...
data segment
db 9,8,7,4,2,0
db '// ::'
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start:
; 数据段
mov ax, data
mov ds, ax
mov si, 0
; 栈段
mov ax, stack
mov ss, ax
mov sp, 16
; 屏幕输出位置
...
阅读全文 |
评论次数(0) |
浏览次数(462) |
所属类型(汇编作业)
[2010-02-28 21:52] 实验13 (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 s2, offset s3, offset s4
row: db 2,4,6,8
start:
mov ax, cs
mov ds, ax
mov bx, offset s
m...
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 s2, offset s3, offset s4
row: db 2,4,6,8
start:
mov ax, cs
mov ds, ax
mov bx, offset s
m...
阅读全文 |
评论次数(0) |
浏览次数(438) |
所属类型(汇编作业)
[2010-02-27 22:11] 实验13 (2) 编写并安装int 7CH中断例程,功能为完成loop指令的功能
参数
cx = 循环次数
bx = 位移
/////////////////////实现//////////////
assume cs:codeseg
codeseg segment
start:
; 中断程序的源位置ds:si = cs:int_7ch_start
mov ax, cs
mov ds, ax
mov si, offset int_7ch_start
; 中断程序的目的位置es:di = 0000:0200H
mov ax, 0
mov es, ax
mov di,...
cx = 循环次数
bx = 位移
/////////////////////实现//////////////
assume cs:codeseg
codeseg segment
start:
; 中断程序的源位置ds:si = cs:int_7ch_start
mov ax, cs
mov ds, ax
mov si, offset int_7ch_start
; 中断程序的目的位置es:di = 0000:0200H
mov ax, 0
mov es, ax
mov di,...
阅读全文 |
评论次数(0) |
浏览次数(493) |
所属类型(汇编作业)
[2010-02-27 21:43] 实验13(1) 安装7CH中断过程,功能为显示一个0结束的字符串,中断过程安装在0000:0200处
参数:
dh = 行号
dl = 列号
cl = 颜色
ds:si = 字符串首地址
///////////////实现////////////////////
assume cs:codeseg
dataseg segment
db 'Welcome to masm!', 0
dataseg ends
codeseg segment
start:
; 中断程序的源位置ds:si = cs:int_7ch_start
mov ax, cs
mov ds, ax
mov si, offset int_7ch_sta...
dh = 行号
dl = 列号
cl = 颜色
ds:si = 字符串首地址
///////////////实现////////////////////
assume cs:codeseg
dataseg segment
db 'Welcome to masm!', 0
dataseg ends
codeseg segment
start:
; 中断程序的源位置ds:si = cs:int_7ch_start
mov ax, cs
mov ds, ax
mov si, offset int_7ch_sta...
阅读全文 |
评论次数(0) |
浏览次数(432) |
所属类型(汇编作业)
[2010-02-27 16:34] 监测点13.1(第二题)用7CH中断完成jmp near ptr s指令的功能
assume cs:codeseg
dataseg segment
db 'conversation!!!!!!!', 0
dataseg ends
codeseg segment
start:
; 设置ds:si中断处理程序的源地址 cs:do_start
mov ax, cs
mov ds, ax
mov si, offset do_start
; 设置es:di为中断处理程序的目的地址 0000:0200
mov ax, 0
mov es, ax
mov di, 0200...
dataseg segment
db 'conversation!!!!!!!', 0
dataseg ends
codeseg segment
start:
; 设置ds:si中断处理程序的源地址 cs:do_start
mov ax, cs
mov ds, ax
mov si, offset do_start
; 设置es:di为中断处理程序的目的地址 0000:0200
mov ax, 0
mov es, ax
mov di, 0200...
阅读全文 |
评论次数(0) |
浏览次数(536) |
所属类型(汇编作业)
『 查看更多文章 』