DATA SEGMENT
str db 'Hello!'
len equ $-str ; len为str所指字符串长度
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CX, len ; CX保存循环次数
LEA SI, str ; 字符串首地址送SI
DISPLAY:
MOV DL, [SI] ; 依次取str所指字符串中单个字符送DL
CALL DISP ; 调用显示字符子程序
INC SI ; 字符串偏移地址加1
LOOP DISPLAY
MOV AH, 4CH
INT 21H
;显示字符子程序,入口参数在DL
DISP PROC
PUSH AX
MOV AH,02H
INT 21H
POP AX
RET
DISP ENDP
CODE ENDS
END START
org 0100h ; 告诉编译器程序加载到 0100h处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ; 调用显示字符串例程
jmp $ ; 无限循环
DispStr:
mov ax, BootMessage
mov bp, ax ; es:bp = 串地址
mov cx, 16 ; cx = 串长度
mov ax, 01301h ; ah = 13, al = 01h
mov bx, 000ch ; 页号为 0(bh = 0) 黑底红字(bl = 0Ch,高亮)
mov dl, 0
int 10h ; 10h 号中断
ret
BootMessage: db "Hello world!"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为
; 512字节
dw 0xaa55 ; 结束标志
怎么也不弄点悬赏分 啊,呵呵
输入后回车显示大写字母
DATA SEGMENT
A DB 'ENTER THE STRING:$'
BUF DB 100
LEN DB ?
STR DB 100 DUP(?)
ZS db 0dh,0ah
WE DB 100 DUP('$')
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,A
MOV AH,9H
INT 21H
LEA DX,BUF
MOV AH,0AH
INT 21H
mov cl,len
mov ch,0
LEA BX,STR
lea SI,WE
CONT: mov al,0
MOV AL,[BX]
CMP AL,'a'
Jb NEXT
CMP AL,'z'
JA NEXT
SUB AL,32
MOV [SI],AL
JMP NEXT2
NEXT: MOV [SI],AL
JMP NEXT2
NEXT2: INC BX
INC SI
LOOP CONT
MOV DX,0
LEA DX,ZS
MOV AH,9H
INT 21H
RET
MAIN ENDP
CODE ENDS
END START
从新起动
在什么环境中实现啊!