| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5272 人关注过本帖
标题:显示一行字符串的程序为什么会显示2行?
取消只看楼主 加入收藏
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
显示一行字符串的程序为什么会显示2行?
DATA SEGMENT
   db 'welcome to masm!',0
DATA ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATA,ss:stack
START:
    MOV dh,1        ;行号
    MOV dl,1        ;列号
    mov cl,2        ;颜色
    mov ax,data
    mov ds,ax
    mov si,0
      call show_str
      
      mov ax,4c00h
      int 21h
show_str:
    stack segment   ;建立栈空间
    dw 0
    stack ends
    mov ax,stack
    mov ss,ax
    mov sp,2
    mov al,0a0h  ;一行有160个字节
    mul dh        ;ax保存第n行前的n行字节数
    push ax
    mov ax,0
    mov dh,0     ;
    mov al,dl
    mov dl,2
    mul dl       ;ax保存第m列前的m列字节数
    pop bx
    add ax,bx        ;行偏移地址加列偏移地址等于总偏移地址
    push ax
    pop bx
    mov ax,0b800h        ;段地址
    mov es,ax
s:    push cx
    mov cl,[si]
    mov ch,0
    jcxz ok
    pop cx
    mov es:[bx+1],cl     ;写入颜色
    mov al,[si]
    mov byte ptr es:[bx],al ;写入字符
    add bx,2
    inc si
    jmp short s
    ok: ret
CODES ENDS
    END START
预计在第一行第一列(开始是第0列,第0行)写入"welcome to masm",结果第0行和第一行都写了该字符串,怎么回事?
王爽的汇编语言p206面第一小题

[此贴子已经被作者于2020-7-28 23:55编辑过]

搜索更多相关主题的帖子: DATA MOV 一行 stack 显示 
2020-07-28 23:40
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
知道了,把mov dh,0这一段删除就可以了,可是为什么会这样呢?
多这一段好像对程序不够成影响呀?
2020-07-29 00:19
快速回复:显示一行字符串的程序为什么会显示2行?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017539 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved