回 帖 发 新 帖 刷新版面

主题:一个小的操作系统原代码 如何编译

这是一段汇编代码。。但我怎么也过不了编译。。
我不知道用什么编译器。。。masm  nasm fasm 都试过。。。。可惜。。
代码来源。。。我想代码不会错
http://www.emu8086.com/dr/asm2html/assembler_source_code/
   其他代码在这个主页上。。
; 2_sample.asm 

name "add-sub"

org 100h

mov al, 5       ; bin=00000101b 
mov bl, 10      ; hex=0ah or bin=00001010b 

; 5 + 10 = 15 (decimal) or hex=0fh or bin=00001111b 
add bl, al

; 15 - 1 = 14 (decimal) or hex=0eh or bin=00001110b 
sub bl, 1

; print result in binary: 
mov cx, 8
print: mov ah, 2   ; print function. 
       mov dl, '0'
       test bl, 10000000b  ; test first bit. 
       jz zero
       mov dl, '1'
zero:  int 21h
       shl bl, 1
loop print

; print binary suffix: 
mov dl, 'b'
int 21h

; wait for any key press: 
mov ah, 0
int 16h

ret







; - other assembly language source codes - 




; - asm2html by emu8086 -

回复列表 (共2个回复)

沙发

这段程序运行结果显示“00001110b”。
无法编译是因为程序没有段定义。

code segment
  assume cs:code
main proc far
  mov al, 5       ; bin=00000101b 
  mov bl, 10      ; hex=0ah or bin=00001010b 
  add bl, al
  sub bl, 1

  ;以2进制方式显示bl
  mov cx, 8
print: 
  mov dl, '0'
  test bl, 10000000b  ; test first bit. 
  jz zero
  mov dl, '1'
zero:  
  mov ah, 2   ; print function. 
  int 21h
  shl bl, 1
  loop print

  ; 追加一个二进制标志“b” 
  mov dl, 'b'
  int 21h

  ; 等待按任意键返回 
  mov ah, 0
  int 16h

  ret
main endp
code ends
  end main

板凳

操作系统?有这么夸张吗?好象是显示二进制数的程序吧?不过类似这种程序,你也可以输入到DEBUG里去调试,你会发现也挺方便的,不过那些标签要改为绝对地址了.

我来回复

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