汇编大作业(清屏和显示特定字符和拷贝自己)汇编学习记录

收集到一下的必须资料
- 显示缓冲区80*25
- 一个字符占用两个字节,分别放ASCII码和属性

assume cs:code
code segment
start:
    mov ax,0b800h
    mov ds,ax   
    mov cx,7d0h         ;  外循环设置为25*80,输出3次
    mov si,0h           
s0: mov byte ptr [si],20h
    add si,1
    mov byte ptr [si],0f8h
    add si,1
    loop s0
    mov ax,4c00h
    int 21h
code ends
end start

另一道题是显示特定字符的。

assume cs:code
code segment
start:
    mov ax,0b800h       
    mov ds,ax           ;
    mov cx,3h           ;  外循环设置为3次
    mov si,0h 
    mov bx,906h         ;14*80+35=0x483 偏移
s0: push cx
    mov cx,10d
    mov si,0d
s1: mov byte ptr [bx+si],31h ;  字符'1'
    add si,1d
    mov byte ptr [bx+si],07h
    add si,1d
    loop s1
    add bx,160d         ;转移至下一行
    pop cx
    loop s0
    mov ax,4c00h
    int 21h
code ends
end start

这里写图片描述

拷贝自己

前置知识
  • 程序加载的时候ip的初始值都为0,这样我们就可以直接用CS加偏移拷贝程序自己了
  • 还有一段安全的空间,00200-00fff

    assume cs:code
    code segment
    mov dx,cs   
    mov es,dx
    mov bx,0020h   ;长度为3
    mov ds,bx
    mov cx,19h     ;长度为3
    mov bx,0h       ;长度为3
    s:  mov ax,es:[bx]  ;长度为3
    mov [bx],ax
    add bx,1h      ;长度为3
    loop s
    code ends
    end
    

    这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值