. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  实验9,调试了3、4个小时,基本完成题目要求,还有少许不太满意  [待解决] 回复[ 7次 ]   点击[ 513次 ]  
homepaper
[帖 主] [ 发表时间:2015-06-25 21:45 ] 
荣誉值:12
信誉值:2
注册日期:2015-06-12 14:12
;思路是,自动计算出显示字符居中,想显示其它内容,只要在前面修改即可。当然,想修改显示效果,也可以直接在前面修改
assume cs:code

text segment
        db 'Welcome to masm!',0
        db 00000010b,00100100b,01110001b
        ;定义绿色、绿底红字、白底蓝字3个属性
text ends

code segment

        start:
        mov ax,text
        mov ds,ax
        mov ax,0b800h
        mov ss,ax        ;初始化
                                                        
        mov bx,0
        s:  
        mov cl,[bx]
        mov ch,0h
        jcxz onset
        inc bx
        loop s        ;取得要显示的字符个数
        
        onset:
        mov ax,0a0h
        sub ax,bx
        mov di,bx        ;保存字符个数到di
        mov bl,2h
        div bl        ;计算出居中排列时字符的起始列地址
        mov si,ax        ;保存起始列地址至si
        mov cx,3
        mov ax,25
        sub ax,cx
        mov bx,2h
        div bl        ;计算出居中排列时字符的起始行
        mov bp,ax        ;保存起始行至bp
        
        mov cx,bp
        mov bp,0
        s0:
        add bp,0a0h
        loop s0        ;计算起始行地址至bp
        
        
        mov bx,0
        mov cx,3        ;设置显示字符行数
        ;mov di,0        ;设置字符属性起始地址
        s1:
        mov dx,cx        ;保存外循环次数
        mov sp,si        ;保存起始列地址
        
        mov cx,di        ;设置内循环次数=字符个数
        s2:
        mov ah,ds:1[di]        ;复制字符属性
        mov byte ptr 1h[bp][si],ah        ;输出字符属性
        mov al,[bx]        ;复制字符
        mov [bp][si],al        ;输出显示字符
        
        inc bx
        add si,2
        loop s2
        
        inc di
        add bp,0a0h
        mov cx,dx
        mov si,sp
        mov bx,0
        loop s1
        
        mov ax,4c00h
        int 21h
code ends

end start
1152659530
[第3楼] [ 回复时间:2023-07-30 02:26 ] 
荣誉值:0
信誉值:0
注册日期:2023-07-25 10:13
请注意!‘0’数字零加引号的机器码不为0
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved