问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编语言试题~球大神解决呀~~~

发布网友 发布时间:2023-11-01 06:29

我来回答

2个回答

热心网友 时间:2024-12-05 05:49

DATA SEGMENT
  mess1     DB 'Enter keyword:','$'
  mess2     DB 'Enter Sentence:','$'
  mess3     DB 'Match at location:','$'
  mess4     DB 'NOT MATCH.',13,10,'$'
  mess5     DB 'H if the sentence',13,10,'$'
  change    DB 13,10,'$'
  stoknin1 label byte
  max1 db 10
  act1 db ?
  stokn1 db 10 p(?)
  stoknin2 label byte
  max2 db 50
  act2 db ?
  stokn2 db 50 p(?)
DATA ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODE SEGMENT
;*************************************代码段
main proc far
    assume cs:code,ds:data,es:data
START:
     push ds
     sub AX,AX
     sub BX,BX
     sub DI,DI
     sub SI,SI
     push AX             ;为返回dos并清空后面要用到的寄存器
     MOV AX,DATA
     MOV DS,AX
     LEA DX,mess1
     MOV ah,09
     INT 21h              ;输出Enter keyword
     LEA DX,stoknin1
     MOV ah,0ah           ;用21号中段的0ah号功能获取关键字
     INT 21h
     cmp act1,0
     je exit              ;如果为空直接退出程序
a10:
;********************************输入Sentence并判断
     LEA DX,change
     MOV ah,09
     INT 21h              ;输出回程,换行
     LEA DX,mess2
     MOV ah,09
     INT 21h              ;输出Enter Sentence:
     LEA DX,stoknin2
     MOV ah,0ah
     INT 21h              ;用21号中段的0ah号功能获取句子
     MOV AL,act1
     CBW
     MOV CX,AX            ;保存关键字长度到cx
     PUSH CX              ;cx入栈
     MOV AL,act2
     cmp AL,0
     je a50               ;保存句子长度到al,若句子为空则跳转显示not match
     SUB AL,act1
     js a50               ;若句子长度小于关键字长度,则跳转显示not match
     INC AL
     CBW
     LEA BX,stokn2        ;将句子的首地址放进BX
     MOV DI,0
     MOV SI,0
a20:
;****************************************比较,内循环
     MOV AH,[BX+DI]
     CMP AH,stokn1[SI]   ;遇见字符不相等就跳转到a30
     jne a30
     INC DI
     INC SI
     DEC CX              ;没遇到一个相等的字符,cx-1,cx不为0则比较下一个字符,当cx为0是说明关键字比较完
     CMP CX,0
     je a40
     jmp a20
a30:
;*****************************************外循环,BX+1,清空si,di继续内循环比较
     INC BX
     DEC AL
     cmp AL,0
     je a50
     MOV DI,0
     MOV SI,0
     POP CX
     push CX
     jmp a20
a40:
;*****************************************match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出
     SUB BX,offset stokn2
     INC BX
     LEA DX,change
     MOV ah,09
     INT 21h
     LEA DX,mess3
     MOV ah,09
     INT 21h
     CALL btoh
     LEA DX,mess5
     MOV ah,09
     INT 21h
     jmp a10
;****************************************二进制转换十六进制
btoh PROC NEAR
        MOV CH,4
rotate: MOV CL,4
        ROL BX,CL
        MOV AL,BL
        and AL,0fh
        add AL,30h
        cmp al,3ah
        jl  printit
        add al,7h
printit:
        MOV dl,al
        MOV ah,2
        int 21h
        dec ch
        jnz rotate
        ret
btoh endp
a50:
;*****************************************显示not match
     LEA DX,change
     MOV ah,09
     INT 21h
     LEA DX,mess4
     MOV ah,09
     INT 21h
     jmp a10
exit:
     ret
main endp
CODE ENDS

可能不是很恰当,自己改改吧

追问谢谢~~我的专业不是计算机,不过还是开这个课了,程序能不能写的简单一些...
还有 ¥跟$有什么不同么?

热心网友 时间:2024-12-05 05:49

ASSUME CS:CODE, DS:DATA
;--------------------------------------------
DATA SEGMENT
MSG1 DB 'Have. $'
MSG2 DB 'Have not. $'

; STR DB 'SDFSDesdfdfsdTetdfdvxcvdrertgsdvx$'
STR DB 'SDFSDesdfdf¥sdTetdfdvxcvdrertgsdvx$' ;¥=A3A4H

;说明:
;这里有两个STR,应该选择一个,在前面加上分号。
;加上分号后,该行就不起作用了。
;没有加上分号的,将会作为字符串来查找¥

DATA ENDS
;--------------------------------------------
CODE SEGMENT

START:
MOV AX, DATA
MOV DS, AX
LEA SI, STR ;字符串首地址
LOP:
MOV AL, [SI] ;取来一字符
CMP AL, '$' ; = $ ?
JZ NNN ;为$就结束
CMP AL, 0A3H
JNZ NEXT
INC SI
MOV AL, [SI]
CMP AL, '$'
JZ NNN
CMP AL, 0A4H
JZ HAV
NEXT:
INC SI
JMP LOP ;继续查找
;-----------------------------
HAV: LEA DX, MSG1
JMP DISP
NNN: LEA DX, MSG2
DISP:MOV AH, 09
INT 21H
;-----------------------------
MOV AH, 4CH ;结束
INT 21H
CODE ENDS
;--------------------------------------------
END START
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小篇幅造句 易车如何发布二手车 转让卖车信息流程 《易车》群聊消息关闭方法 易车消息夜间勿扰方法步骤 易车如何开启消息夜间勿扰 易车 开启@消息推送 ...当入射角是 时,反射角是 。我们能从各个方向看到本身不发光的物体... 发泄的近义词和反义词是什么_发泄是什么意思? 我的世界手游 我的世界手机版怎么做末地传送门? 我的世界手游 末地传送门怎么做? 安全评价师的报考科目有什么 福州江西旅游攻略 十六进制AD转换 八进制 数制转换:讲二进制数11001100,八进制数60,十六进制... 苹果高仿机可以刷机成iso系统1 Overture和弦的连线怎么打7 苹果高仿机刷机可以重装系统吗?7 请问,overture中的钢琴的和弦怎么改成分解和弦? overture中钢琴和弦怎么改成琶音形式?10 overture打谱软件怎么输入罗马数字和弦3 QQ被禁止登陆后,要多久才可以才可以恢复?3 支付宝新出的财富是什么?推出这个的目的是什么?15 信用卡有多少额度549 有的人很有钱吗?多少资产才能有?8 了,要多少存款5 户口本上的补报往年出生是什么意思有什么影响吗?78 支付宝要存多少钱3 鸽子,甲鱼能不能一起炖426 吧里都用什么游戏耳机 雀巢速溶咖啡用的是什么咖啡豆?65 雀巢醇品用什么咖啡豆4 新买的戴尔灵越 15 5000 初次充电要充多久 手冲跟速溶有什么区别?9 速溶咖啡5 为什么冬天的雪花每个都不尽相同? 户口本上的补报往年出生是什么意思?16 现在,结婚的那天新娘头上为什么要戴花呢?2 支付宝财富v3有多少人 新娘结婚当天要戴什么鲜花在头上? 为什么我的笔记本装不了系统,? 这个需要多少资产才能办理?9 结婚的时候新娘为什么要拿着花6 驼色大衣 里面配什么颜色的毛衣好看741 驼色衣服适合多大年龄穿1 驼色大衣配什么样的包包~ 直接上图 本人20岁,学生,小女生...1 overture音符上怎么写字?比如在音符上方标M或m表示大... 下列不属于1942年中共延安整风运动的内容是15 急急急。overture 4.0怎么打出钢琴谱的和弦。 家里人不要我了,还赶我走1 我怎么用overture做手风琴谱,左手大三、小三等和弦如何...4 3AD.08 16进制数转换成10进制和8进制等于多少?2