VB学习笔记

stack segment stack \'stack\'
   dw 32 dup(0) ;此处输入堆栈段代码
stack ends
data segment
;IBUF OBUF 看成是内存的地址,IBUF+1和IBUF+2就是IBUF后面的第一个和第二个单元的地址
IBUF DB 0FFH,0,255 DUP (0)
;DB 是DEFINE BYTE的缩写就是定义的意思;OFFH  =1111 1111 
;DB 7,0,6 DUP(?)就是DB 7,0,?,?,?,?,?,?
;x  DUP(y)即重复复制y到寄存器x次;
;DB 7,0,6dup(?)即分别分配内存空间7,0,6;而?表示未设定初始值。

OBUF DB \'>\',0DH,0AH,\'$\'  
 ;0DH和0AH分别是回车和换行的ASCII码
;$\'是DOS功能调用INT 21H中9号功能要求的要显示字符串的结束标志。

data ends

code segment
begin proc far
assume ss:stack,cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
  
MOV DX, OFFSET OBUF
MOV AH,9
INT 21H
;9号功能调用   格式;MOV DX,待显示字符串的首偏移地址 ,OFFSET是将数值回送变量或标号的偏移地址值
                   ;MOV AH,9
                   ;INT 21H本调用执行后,
                   ;显示器显示待显示的字符串。执行前要在DS数据段定义一串字符,该字符串必须以$结束。

MOV DX,OFFSET IBUF
MOV AH,10
INT 21H
;10号功能调用   格式;MOV DX,数据区的首偏移地址
                   ;MOV AH,10
                   ;INT 21H 档需要输入字符串时,应在DS数据段中事先定义以个变量数据区IBUF,其定义格式如下
                   ;IBUF DB数据区大小,0,数据区大小DUP(0)


MOV BL,IBUF+1
MOV BH,0
MOV IBUF [BX+2],\'$\'

MOV DL,0AH
MOV AH,2
INT 21H
;2号功能调用   格式;MOV DL,待显示字符的ASCII码
                   ;MOV AH,2
                   ;INT 21H本调用执行后,显示器显示待显示的字符

MOV DX, OFFSET IBUF+2
MOV AH,9
INT 21H

 ret
 ;此处输入代码段代码
   
   
begin endp
code ends
end begin
stack segment stack \'stack\'
   dw 32 dup(0) stack ends
data segment
OBUF DB \'>\',0DH,0AH,\'$\'
IBUF DB 0FFH,0,255 DUP (0)
data ends

code SEGMENT 
begin proc far
assume ss:stack,cs:code,ds:data
 push ds
  sub ax,ax
  push ax
  mov ax,data
  mov ds,ax
  MOV DX, OFFSET OBUF
MOV AH,9
INT 21H
MOV DX,OFFSET IBUF
MOV AH,10
INT 21H
MOV BL,IBUF+1
MOV BH,0
MOV IBUF [BX+2],\'$\'
MOV DL,0AH
MOV AH,2
INT 21H
MOV DX, OFFSET IBUF+2
MOV AH,9
INT 21H
 ret
    
   
begin endp
code ends
    end begin

。。。。。。。。。。。。。。。。。。。。。。。。