回 帖 发 新 帖 刷新版面

主题:为什么没输出的?

刚学汇编,不懂下面的程序为什么没输出‘hello world’.
stack segment stack
      db 100 dup(?)
stack ends
data segment
 a  db 'hello world$'
data ends
code segment
assume ss:stack,ds:data,cs:code
start: mov ah,09
       mov dx,offset a
       int 21
       int 20
code ends
end  start

回复列表 (共7个回复)

沙发

ds没有放好
stack segment stack
      db 100 dup(?)
stack ends
data segment
 a  db 'hello world$'
data ends
code segment
assume ss:stack,ds:data,cs:code
start: mov ax,data
       mov ds,ax
       mov ah,09
       mov dx,offset a
       int 21
       int 20
code ends
end  start

板凳

stack segment stack
      db 100 dup(?)
stack ends
data segment
 a  db 'hello world$'
data ends
code segment
assume ss:stack,ds:data,cs:code
start: mov ax,data
       mov ds,ax
       mov ah,09
       mov dx,offset a
       int 21h
       mov ah,4ch
       int 21h
code ends
end  start

3 楼

这里不是已经定义了吗assume ss:stack,ds:data,cs:code。
为什么还要这两句,不明白这两句有什么用,
mov ax,data
mov ds,ax

4 楼

assume只是关联,但是数据并没有放到ds里面去
我们要人工写代码放进去的

5 楼

楼上的各位大哥
我就见过这样的汇编输出语句:
 mov dl,
 mov ah,2
 int 21h
              mov ah,09  和mov ah,2 有什么区别么?

6 楼

mov ah,09是输出字符串,字符串首字母地址放DX
mov ah,02是输出字符,字符数据放DL

7 楼

assume只定义段寄存器,并不附植

我来回复

您尚未登录,请登录后再回复。点此登录或注册