汇编网首页登录博客注册
csusuntao的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2010-03-06 21:55] 实验16 编写包含多个子程序的中断例程(简洁的直接定址)

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...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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
...
阅读全文 | 评论次数(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
    
    ...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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
    
    ; 屏幕输出位置
...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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,...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(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...
阅读全文 | 评论次数(0) | 浏览次数(536) | 所属类型(汇编作业)
『 查看更多文章 』