汇编语言(王爽 第三版)实验十六

与原实验稍有不同,实现的功能为按下1键清屏

按下2键设置前景色为蓝色

按下3键设置背景色为白色

按下4键向上滚动一行

    assume cs:code

    stack segment
    db 128 dup (0)
    stack ends

    code segment
start:    mov ax,stack
    mov ss,ax
    mov sp,128

    mov ax,cs
    mov ds,ax

    mov ax,0
    mov es,ax

    mov di,204h
    mov si,offset int9
    mov cx,offset int9end-offset int9
    cld
    rep movsb

    push es:[9*4]
    pop es:[200h]
    push es:[9*4+2]
    pop es:[202h]

    cli
    mov word ptr es:[9*4],204h
    mov word ptr es:[9*4+2],0
    sti

    mov ax,4c00h
    int 21h

int9:    push ax
    push bx
    push cx
    push es
    in al,60h
    pushf
    call dword ptr cs:[200h]
    cmp al,02
    je do1
    cmp al,03
    je do2
    cmp al,04
    je do3
    cmp al,05
    je do4
    jmp short int9ret

do1:    call sub1
    jmp short int9ret
do2:    call sub2
    jmp short int9ret
do3:    call sub3
    jmp short int9ret
do4:    call sub4
    jmp short int9ret

int9ret:pop es
    pop cx
    pop bx
    pop ax
    iret

sub1:    push bx
    push cx
    push es
    mov bx,0b800h
    mov es,bx
    mov bx,0
    mov cx,2000
sub1s:    mov byte ptr es:[bx],‘ ‘
    add bx,2
    loop sub1s
    pop es
    pop cx
    pop bx
    ret

sub2:    push ax
    push bx
    push cx
    push es
    mov bx,0b800h
    mov es,bx
    mov bx,1
    mov cx,2000
    mov al,00000001b
sub2s:    and byte ptr es:[bx],11111000b
    or es:[bx],al
    add bx,2
    loop sub2s
    pop es
    pop cx
    pop bx
    pop ax
    ret

sub3:    push ax
    push bx
    push cx
    push es
    mov bx,0b800h
    mov es,bx
    mov bx,1
    mov cx,2000
    mov al,01110000b
sub3s:    and byte ptr es:[bx],10001111b
    or es:[bx],al
    add bx,2
    loop sub3s
    pop es
    pop cx
    pop bx
    pop ax
    ret

sub4:    push cx
    push si
    push di
    push es
    push ds

    mov si,0b800h
    mov es,si
    mov ds,si
    mov si,160
    mov di,0
    cld
    mov cx,24
sub4s:    push cx
    mov cx,160
    rep movsb
    pop cx
    loop sub4s
    mov cx,80
    mov si,0
sub4s1:    mov byte ptr [160*24+si],‘ ‘
    add si,2
    loop sub4s1
    pop ds
    pop es
    pop di
    pop si
    pop cx
    ret
int9end:nop
    code ends
    end start
时间: 2024-10-26 21:20:43

汇编语言(王爽 第三版)实验十六的相关文章

汇编语言(王爽 第三版)实验十五

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 mov di,204h mov cx,offset int9end-offset int9 cld rep movsb push es:[9*4] pop es:[200h]

汇编语言(王爽 第三版)实验十二

assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax mov di,200h mov cx,offset do0end-offset do0 cld rep movsb mov ax,0 mov es,ax mov word ptr es:[0*4],200h mov word ptr es:[0*4+2],0 mov ax,4c00h int 21h do0: jm

汇编语言(王爽 第三版)实验十四

assume cs:code code segment s1: db 9,8,7,4,2,0 s2: db 'yy/mm/dd hh:mm:ss','$' start: mov ax,cs mov ds,ax mov si,offset s1 mov di,offset s2 mov cx,6 s: push cx mov al,ds:[si] out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30

汇编语言(王爽 第三版)实验十三

2)显示八十个‘!’ assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset show mov ax,0 mov es,ax mov di,200h mov cx,offset showend-offset show cld rep movsb mov ax,0 mov es,ax mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0 mov ax,0b8

汇编语言(王爽 第三版)第十七章字符串的输入

assume cs:code data segment db 128 dup (0) data ends code segment start: mov ax,data mov ds,ax mov dh,24 mov dl,2 mov si,0 call getstr mov ax,4c00h int 21h getstr: push ax getstrs: mov ah,0 int 16h cmp al,20h jb nochar mov ah,0 call charstack mov ah,

汇编语言 (王爽 第三版)第二章:寄存器

(1)写出每条汇编指令执行后相关寄存器中的值(注意区别是mov还是add,操作对象是16位寄存器还是8位寄存器) mov ax,62627    AX=F4A3H mov ah,31H       AX=31A3H mov al,23H        AX=3123H add ax,ax          AX=6246H  (因为操作的对象是16位寄存器所以除了最高位都存在进位) mov bx,826CH   BX=826CH mov cx,ax          CX=6246H mov a

汇编语言 王爽第二版 总结

汇编语言 王爽第二版 总结,所以内容都是8086的 summary asssembly ,汇编总结 why: 最初始的编程语言就是使用打孔机,打出来的0 1 代码,然后把卡片插入到电脑中运行然后 看输出结果,这种纯01的二进制代码,编写困难调试困难运行结果的显示看着也很蛋疼,就像 一个简单的"hello world",11个字符,需要11×8个二进制,并且再进行输出,就更麻烦,因为 全部都是二进制,代码.为了更高效的开发程序,就出现了汇编语言,用来代替二进制代码的输入. what: 汇

汇编语言 王爽

汇编语言 王爽 目录 汇编语言... 1 王爽... 1 第一章:基础知识 第二章:寄存器 第三章 寄存器(内存访问) 第四章 第一个程序 第六章  包含多个段的程序 第七章 更灵活定位内存的方法 第八章 数据处理的两个基本问题 第一章:基础知识 汇编语言:汇编语言是什么?为什么学习汇编语言?学习汇编语言是学习什么? 早起使用机器语言,但机器语言 晦涩难懂也难以使用,所以出现了汇编语言.即用通熟易懂的汇编指令替代全是二进制0和1的机器指令. 于是也就出现了编译器,即把汇编指令翻译成机器指令. 机

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十六:IIC储存模块

IIC储存器是笔者用来练习精密控时的经典例子.<整合篇>之际,IIC储存器的解释,笔者也自认变态.如今笔者回头望去,笔者也不知道自己当初到底发什么神经,既然将IIC的时序都解释一番.由于开发上板也嵌着IIC储存器(24LC04),笔者还得循例地介绍一下. IIC储存器是应用IIC总线的储存器,时序本身并不是很复杂不过缺有一大堆时序参数,而且官方提供的时序也不利于描述,所以许多时序都必须自行绘制,真是麻烦死人.麻烦归麻烦,笔者终究还要吃饭,为了肚子,再麻烦的事情也要硬着头皮捱过去 ... 这也是