放牧代码和思想
专注自然语言处理、机器学习算法
    时间有限,只有GitHub上的issue能及时处理,大约每周末一次。另外,不要叫我楼主,谢谢。

8086汇编版的Hello World

;———————————————————————–
; 在屏幕中央显示Hello World!—— From Hankcs,2010
;———————————————————————–

assume cs:code,ds:data
data segment
     db ‘Hello World!’      ;定义要显示的字符串(共12字节)
data ends

code segment
start:
        mov ax,data
        mov ds,ax           ;ds绑定数据段
       
      
        mov ax,0b872h       ;算出屏幕第12行中间的显存的段起始位置放入ax中
        mov es,ax           ;此时es为屏幕第12行中间的显存的段起始位置
       
        mov si,0            ;初始化寄存器,分别用来控制奇偶地址
        mov di,0
       
        mov cx,0ch          ;第一次循环为0ch次
s1:     mov al,ds:[si]      ;读取单个字符
        mov es:[di],al      ;写到显存里面
        inc si
        add di,2
        loop s1             ;此循环实现偶地址中存放字符
       
        mov si,1            ;si的值设为1,从而为在显存奇地址中存放字符的颜色属性做准备
        mov al,0ah          ;设置颜色属性为绿色高亮
       
        mov cx,0ch          ;第二个循环也为0ch(12)次
s2:     mov es:[si],al
        add si,2
        loop s2             ;此循环实现奇地址中存放字符的颜色属性
       
        ;程序暂停,等待输入
        MOV AH,01H
        INT 21H
       
        mov ax,4c00h
        int 21h
code ends

end start

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » 8086汇编版的Hello World

分享到:更多 ()

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机