跪求一段汇编代码 在线等急 `!!!!
从键盘上输入26个字符(带回显)后,用AH=9和INT21H在屏幕当前行的下一行显示输出.编写的程序要有提示输入信息(注意回车换行的使用)...
从键盘上输入26个字符(带回显)后,用AH=9和INT 21H在屏幕当前行的下一行显示输出.编写的程序要有提示输入信息(注意回车换行的使用)
展开
3个回答
展开全部
DSEG SEGMENT 定义数据段
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’ 定义元素STR
KEYSTR DB ‘SUN’定义元素KEYSTR
NUM DW ? 保留一个空间
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’ 定义堆栈段
DW 256 DUP(?) 设置堆栈空间
STACK ENDS
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG 开始执行
MOV DS,AX 设置数据段寄存器
MOV ES,AX 设置附加段寄存器
MOV AX,0 AX置0
MOV DX,KEYSTR 字符串SUM入DX
LEA BX,STR STR地址存入BX
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3 设置循环次数为3
REPE CMPSB 循环比较字符串,当cx=0时退出循环
JNZ G1 不为0则跳到g1段执行。
INC AX ax 加1
G1: INC BX bx加1
DEC DX dx减1
JNZ COMP 不为0继续比较
MOV NUM,AX 比较次数存入ax
MOV AX,4C00H 退出程序
INT 21H
CODE ENDS
END START
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’ 定义元素STR
KEYSTR DB ‘SUN’定义元素KEYSTR
NUM DW ? 保留一个空间
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’ 定义堆栈段
DW 256 DUP(?) 设置堆栈空间
STACK ENDS
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG 开始执行
MOV DS,AX 设置数据段寄存器
MOV ES,AX 设置附加段寄存器
MOV AX,0 AX置0
MOV DX,KEYSTR 字符串SUM入DX
LEA BX,STR STR地址存入BX
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3 设置循环次数为3
REPE CMPSB 循环比较字符串,当cx=0时退出循环
JNZ G1 不为0则跳到g1段执行。
INC AX ax 加1
G1: INC BX bx加1
DEC DX dx减1
JNZ COMP 不为0继续比较
MOV NUM,AX 比较次数存入ax
MOV AX,4C00H 退出程序
INT 21H
CODE ENDS
END START
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
data segment
enterMsg db "Please enter a line of characters(num of chars <= 100):",13,10,13,10,'$'
printMsg db 13,10,"You've entered:",13,10,'$'
buffer db 103 dup (?)
errorMsg db 13,10,"ERROR: number of characters greater than 100, please press ENTER to quit.",'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
mov bx, offset buffer
mov byte ptr [bx], 13
mov byte ptr [bx+1], 10
add bx, 2
mov si, 0
mov ah, 9h
mov dx, offset enterMsg
int 21h
mov ah, 1h
next:
int 21h
cmp al, 13
jz done
cmp si, 100
jz error
mov byte ptr [bx+si], al
inc si
jmp next
error:
mov dx, offset errorMsg
mov ah, 9h
int 21h
continue:
mov ah, 7h
int 21h
cmp al, 13
jnz continue
jmp quit
done:
mov dl, 13
mov ah, 2h
int 21h
mov dl, 10
int 21h
mov byte ptr [bx+si], '$'
mov dx, offset printMsg
mov ah, 9h
int 21h
mov dx, offset buffer
int 21h
quit:
mov ax, 4c00h
int 21h
code ends
end start
enterMsg db "Please enter a line of characters(num of chars <= 100):",13,10,13,10,'$'
printMsg db 13,10,"You've entered:",13,10,'$'
buffer db 103 dup (?)
errorMsg db 13,10,"ERROR: number of characters greater than 100, please press ENTER to quit.",'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
mov bx, offset buffer
mov byte ptr [bx], 13
mov byte ptr [bx+1], 10
add bx, 2
mov si, 0
mov ah, 9h
mov dx, offset enterMsg
int 21h
mov ah, 1h
next:
int 21h
cmp al, 13
jz done
cmp si, 100
jz error
mov byte ptr [bx+si], al
inc si
jmp next
error:
mov dx, offset errorMsg
mov ah, 9h
int 21h
continue:
mov ah, 7h
int 21h
cmp al, 13
jnz continue
jmp quit
done:
mov dl, 13
mov ah, 2h
int 21h
mov dl, 10
int 21h
mov byte ptr [bx+si], '$'
mov dx, offset printMsg
mov ah, 9h
int 21h
mov dx, offset buffer
int 21h
quit:
mov ax, 4c00h
int 21h
code ends
end start
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DSEG SEGMENT 定义数据段
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’ 定义元素STR
KEYSTR DB ‘SUN’定义元素KEYSTR
NUM DW ? 保留一个空间
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’ 定义堆栈段
DW 256 DUP(?) 设置堆栈空间
STACK ENDS
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG 开始执行
MOV DS,AX 设置数据段寄存器
MOV ES,AX 设置附加段寄存器
MOV AX,0 AX置0
MOV DX,KEYSTR 字符串SUM入DX
LEA BX,STR STR地址存入BX
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3 设置循环次数为3
REPE CMPSB 循环比较字符串,当cx=0时退出循环
JNZ G1 不为0则跳到g1段执行。
INC AX ax 加1
G1: INC BX bx加1
DEC DX dx减1
JNZ COMP 不为0继续比较
MOV NUM,AX 比较次数存入ax
MOV AX,4C00H 退出程序
INT 21H
CODE ENDS
END START
这个程序说白了也就是找sum在THIS IS A STRING WITH OR WITHOUT SUN中的位置,并显示比较的次数。
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’ 定义元素STR
KEYSTR DB ‘SUN’定义元素KEYSTR
NUM DW ? 保留一个空间
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’ 定义堆栈段
DW 256 DUP(?) 设置堆栈空间
STACK ENDS
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG 开始执行
MOV DS,AX 设置数据段寄存器
MOV ES,AX 设置附加段寄存器
MOV AX,0 AX置0
MOV DX,KEYSTR 字符串SUM入DX
LEA BX,STR STR地址存入BX
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3 设置循环次数为3
REPE CMPSB 循环比较字符串,当cx=0时退出循环
JNZ G1 不为0则跳到g1段执行。
INC AX ax 加1
G1: INC BX bx加1
DEC DX dx减1
JNZ COMP 不为0继续比较
MOV NUM,AX 比较次数存入ax
MOV AX,4C00H 退出程序
INT 21H
CODE ENDS
END START
这个程序说白了也就是找sum在THIS IS A STRING WITH OR WITHOUT SUN中的位置,并显示比较的次数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询