当前位置: 代码迷 >> 汇编语言 >> 关于显示字符串的疑义
  详细解决方案

关于显示字符串的疑义

热度:179   发布时间:2016-05-02 04:29:01.0
关于显示字符串的疑问


[bits 16]
org 100h 

; common mynum 1
section .text 
start:
        ;; -------------------- 1 -------------------------------
mov dl, 'A'
mov ah, 2 ; single char use
int 21h

mov DL, 13 ; 回车
mov ah, 2 ; single char use
int 21h

mov DL, 10 ; 换行
mov ah, 2 ; single char use
int 21h
        ;; --------------------------------------------------------
mov cx, len
mov dx, info
        mov ah, 09h 
        int 0x21

mov ax, 4c00h ; 返回DOS
int 21h

section .data
hello:
info db 'this is a demo program running under DOS!',13,10,$
len db $-hello


我使用的编译器是:nasm
运行环境是:dosbox 0.74
编译命令: nasm -f bin -o xx.com xx.asm
===================================
疑问:
为什么,我删除第一部分,第二部分(显示字符串)会出现乱码,好像都乱了
但是,看中断说明显示字符串只需要指定dx为字符串的首地址,也就是DS:DX能够定位到字符串就可.

难道说,显示字符串不是这样写么?
新手求教,谢谢!

------解决思路----------------------
info 末尾的那个 $ 应该是字符,两边要用单引号成 '$'
有第一部分正常,纯属巧合,要是将第一部分增加或去除些指令,$ 所表示的当前地址以及 info 的地址就不会是 24h('$') 了。
  相关解决方案