. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  自己编程实现‘welcome to masm!'  [待解决] 回复[ 2次 ]   点击[ 379次 ]  
guochl
[帖 主]   [ 发表时间:2016-03-27 10:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2016-02-29 13:00
assume cs:code,ds:data,ss:stack
        
data segment
a        db 'welcome to masm!'                ;按照要求需要显示三遍                
b        db 82h,0a4h,0f1h                        ;每一遍显示对应的显示模式        
data ends

stack segment
  dw 0,0,0,0
stack ends

code segment

start:
        mov ax,stack
        mov ss,ax        
        mov sp,8
    mov ax,data
    mov ds,ax
    mov ax,0b800h                                ;显存开始的位置
    mov es,ax        
;------------------------------------------------------------------        
        mov bx,0                                        ;用于定位行显示位置的
        mov cx,3                                        ;显示三遍
        mov bp,0                                        ;定位显示模式
;------------------------------------------------------------------
copy_s:                                                        ;显示字符串        
        push cx                                                ;循环显示字符的时候还要用,所以暂存
        mov cx,16                                        ;显示字符串的计数器,共16个
        mov si,0                                        ;变址定位字符
        mov di,0                                        ;变址定位需要显示的位置
copy_w:                                                        ;显示字符串的每个字符        
        mov al,ds:[si]                                ;字符放在显存的低位
        mov ah,ds:[16+bp]                        ;字符属性放在显存的高位
        mov es:[10*160+64+bx+di],ax        ;将字符和属性写入显存
        inc si                                                ;取下个字符的计数器自增1
        add di,2                                        ;写下个字符的计数器自加2
        loop copy_w
        add bx,160                                        ;写完一个字符串后,定位到下一行
        inc bp        
        pop cx
        loop copy_s
;------------------------------------------------------------------
    mov ax,4c00h
    int 21h
        
code ends
end start
annqian
[第1楼]   [ 回复时间:2022-09-21 15:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2022-09-21 14:55
功能可以实现
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved