我这个汇编语言程序应该怎么改

我这个汇编语言程序应该怎么改,第1张

你这不是汇编程序呀,是C程序。把这个工程关掉,把那个程序的文件名改成567.C,然后重建一个颤凳工程,再加载改名的C程尘悔序,茄兄旅再编译就好啦!

其实,比较简便的 *** 作是,删掉这个工程中的567.ASM,重新加载567.C就行。

楼主这段程序写得不错,结构清晰,层次分明,已经正确地完成了字符的转换。只是在算法上略显不足,再就是没有显示输出。

针对这两点,在楼主原有程序的基础上,我给做了一下优化和补充(这部分,我用小写),仅供参考。

DATA SEGMENT

X DB 41H,42H,43H,44H,45H,46H,47H,48H,49H,50H,51H,52H,53H,54H,55H,5EH,64H,48H,76H,77H

Y DB 20 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,X

LEA DI,Y

MOV CX,20

cld 清方向标志,使变址寄存器增值

push ds

pop es 使附加段与数据段在同一段位

L1: lodsb

CMP AL,'A'

JB L2

CMP AL,'Z'

JA L2

or AL,20H 逻辑运算指令远比数据传送指令运行周期短、效率高

JMP L3

L2: xor al,al

JMP L3

L3: stosb

LOOP L1

---------------------------

为显示输出做准备

mov byte ptr [si],0dh 在源字符串后面加一个回车符

inc si

mov byte ptr [si],0ah 在源字符串后面加一个换行符

inc si

mov al,'$'

mov [si],al 在源字符串后面加一个字符串输出结束标志符,这是dos功能调用9号功能的要求

stosb 在目标字符串后面加一个字符串输出结束标志符

---------------------------

下面是显示输出

lea dx,X 源字符串地址

mov ah,9 显示输出

int 21h

lea dx,Y 目标字符串地址

mov ah,9 显示输出

int 21h

---------------------------

MOV AH,4CH

INT 21H

CODE ENDS

END START


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12548166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存