汇编显示一个字符串的程序?

简单,只要写显示出一个"hello"就可以了.好像是用09号功能
2025-02-25 03:50:10
推荐回答(5个)
回答1:

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

回答2:

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 ; 结束标志

回答3:

怎么也不弄点悬赏分 啊,呵呵
输入后回车显示大写字母
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

回答4:

从新起动

回答5:

在什么环境中实现啊!