. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  新手写实验9,大家看看  [待解决] 回复[ 3次 ]   点击[ 353次 ]  
cfwyy
[帖 主]   [ 发表时间:2014-09-11 16:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-09-11 16:44
分享一下实验9我的写法:
我是直接一个循环里搞定了 感觉这样最直接了, 如有不妥请指正。
assume CS:codesg,DS:data
data SEGMENT
    DB 'welcome to masm!'
    DB 02h,24h,71h ;对应属性 绿色,绿底红色,白底蓝色
data ENDS
codesg SEGMENT
start:
    MOV AX,data
    MOV DS,AX   
    MOV AX,0b800h
    MOV ES,AX
    MOV CX,16
    MOV BX,720h;  写入的起点,若从顶点开始显示,为0,
               ;屏幕中间的话,3行32个字节,左右各64个,上下各11行,11*160+64=1824=720h 
    MOV SI,0
 s0:MOV AL,[SI]
    MOV ES:[BX],AL
    MOV ES:[BX+160],AL ;下面一行
    MOV ES:[BX+320],AL ;下面两行
    MOV BYTE PTR ES:[BX+1],02h
    MOV BYTE PTR ES:[BX+160+1],24h
    MOV BYTE PTR ES:[BX+320+1],71h    
    INC SI
    ADD BX,2
    LOOP s0  
    MOV AX,4c00h
    INT 21h
codesg ENDS
END start
gyq
[第1楼]   [ 回复时间:2014-09-12 00:09 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
写的不错,赞一个!
kok1986
[第2楼]   [ 回复时间:2014-09-12 10:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-06-30 13:40
跟我第2次写的是一样的,但是我看了别人的,发现有更简洁的。
gyq
[第3楼]   [ 回复时间:2014-09-12 14:12 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
我写个垃圾程序,功能没问题:(逻辑混乱,晦涩难懂)
assume CS:s
s SEGMENT
 DB 'welcome to masm!'
k:MOV AX,0b800h 
    MOV ES,AX 
    MOV CX,16
    mov si,0
        mov ah,2
 s0:MOV AL,cs:[si]
    mov bx,si
    MOV ES:[1824+bx+si],ax 
    MOV ES:[1984+bx+si],AL 
    MOV ES:[2144+bx+si],AL
    MOV BYTE PTR ES:[bx+1985+si],24h 
    MOV BYTE PTR ES:[2145+si+bx],71h     
    INC SI  
    LOOP s0   
    MOV AX,4c00h 
    INT 21h 
s ENDS 
END k
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved