社区
汇编语言
帖子详情
1道汇编题求解!100分送!!!
xishifengxiaodao
2004-04-27 10:02:42
在存储器中有一个首地址为BUF的长度为N(N小于255)的字符串,要求统计其中数字、大写字母的个数,并将结果依次存入字符串后的2个相邻单元中。
‘0’-----‘9’ ASCII 为30H-----39H
‘A’------‘Z’ ASCII 为41H-------5AH
希望能写的帮我写一下,100送!
也是共同学习,这也是大家进这个网站的目的啊
谢谢了!
...全文
99
15
打赏
收藏
1道汇编题求解!100分送!!!
在存储器中有一个首地址为BUF的长度为N(N小于255)的字符串,要求统计其中数字、大写字母的个数,并将结果依次存入字符串后的2个相邻单元中。 ‘0’-----‘9’ ASCII 为30H-----39H ‘A’------‘Z’ ASCII 为41H-------5AH 希望能写的帮我写一下,100送! 也是共同学习,这也是大家进这个网站的目的啊 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dananhai
2004-05-02
打赏
举报
回复
我也学习学习
呵呵
delphi023445
2004-05-01
打赏
举报
回复
data segment
buf db '1354ABCD*$@98FG'
result db 3 dup(?)
count equ result-buf
data ends
code segment 'code'
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov ch,count
lea si,buf
xor dx,dx
lp: mov ah,[si]
cmp ah,30h
jl next
cmp ah,39h
jg abc
inc dh
jmp next
abc: cmp ah,41h
jl next
cmp ah,5ah
jg next
inc dl
next: inc si
dec ch
jnz lp
mov result,dh
mov result+1,dl
mov ah,4ch
int 21h
code ends
end start
我修改了一下
xishifengxiaodao
2004-04-30
打赏
举报
回复
谢谢了
dunkel
2004-04-29
打赏
举报
回复
置 buf 起始地址的 mov bx, 0 这样的指令不太合适, 应该是 mov bx, offset buf , 虽然这里最后的结果是一样的, 但不应该形成这样的习惯, 否则一旦到复杂点儿的多模块的程序极易出错. 另外, 如果是用 mov si, offset buf lodsb cmp al, ... 这样的指令组合, 循环使用 mov cx, count loop ... 的话, 程序还能再精练些的
xishifengxiaodao
2004-04-29
打赏
举报
回复
谢谢大家了!
不过本人经过认真思考,也写出了一个,仅供参考!
data segment
buf db '1354ABCD*$@98FG'
result db 3 dup(?)
count equ result-buf
data ends
code segment 'code'
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov ch,count
mov bx,0
mov dx,0
lp: mov ah,buf[bx]
cmp ah,30h
jl next
cmp ah,39h
jg abc
inc dh
jmp next
abc: cmp ah,41h
jl next
cmp ah,5ah
jg next
inc dl
next: inc bx
dec ch
jnz lp
mov result,dh
mov result+1,dl
mov ah,4ch
int 21h
code ends
end start
csdsjkk
2004-04-29
打赏
举报
回复
mov si,offset buf
mov cx,n
mov dx,0
cld
l0:
lodsb
cmp al,'0'
jb l2
cmp al,'9'
ja l1
inc dl
jmp l2
l1:
cmp al,'A'
jb l2
cmp al,'Z'
ja l2
inc dh
l2:
loop l0
mov [si],dx
F8F9
2004-04-29
打赏
举报
回复
mov si,BUF
mov cx,N
mov word ptr [si+N],0
cld
beg_do:
lobsb
cmp al,'0'
jc short next
cmp al,'9'+1
jnc short isalpha
inc byte ptr [si+N+1]
isalpha:
cmp al,'A'
jc short next
cmp al,'Z'+1
jnc short next
inc byte ptr [si+N+2]
next:
loop beg_do
老吹老吹
2004-04-28
打赏
举报
回复
在存储器中有一个首地址为BUF的长度为N(N小于255)的字符串,要求统计其中数字、大写字母的个数,并将结果依次存入字符串后的2个相邻单元中。
‘0’-----‘9’ ASCII 为30H-----39H
‘A’------‘Z’ ASCII 为41H-------5AH
LOADSB ;从DS:SI 中读 STOSB ;存入到ES:DI 中
ECX=字符串长度
*<--------------------------------------------------------------*
|<---------------------------* |
LOADSB-->数字吗?-Y->EAX++ -->STOSB -->大写字母吗?-Y->EBX++ -->STOSB-->退出
|N | |N |
*----------------------->* *---------------->*
xishifengxiaodao
2004-04-28
打赏
举报
回复
不过我好像觉的这个程序是错的啊!
XmagicX
2004-04-28
打赏
举报
回复
其实这跟C思路差不多,汇编是逐一比较
先移入一个字符比较是否数字是的话寄存器+1,不是再判断是否大写,是另一寄存器+1,不是移入一个字符,直到移完
xishifengxiaodao
2004-04-28
打赏
举报
回复
最好也能把大概思路说出来,
汇编就是这样的,有时不说出来难懂
谢谢了!@
本人对C语言比较精通,谁有不懂可以问,
这样才能一起学习啊
xishifengxiaodao
2004-04-28
打赏
举报
回复
如果别人还有其它方法的话的,也是可以写上的,
共同学习的吧!
xishifengxiaodao
2004-04-28
打赏
举报
回复
先谢谢了,我去试一下!
1cctv
2004-04-27
打赏
举报
回复
上面的次序不对了。
mov ebx,buf
mov ecx,N
mov edi,ebx
add edi,ecx
mov word ptr[edi],0
loopp:
cmp byte ptr[ebx],30h
jl okok
cmp byte ptr[ebx],39h
jg gnum
inc byte ptr[edi]
jmp short okok
gnum:
cmp byte ptr[ebx],41h
jl okok
cmp byte ptr[ebx],5ah
jg okok
inc byte ptr[edi+1]
okok:
inc ebx
loop loopp
1cctv
2004-04-27
打赏
举报
回复
mov ebx,buf
mov edi,ebx
add edi,N
mov word ptr[edi],0
mov ecx,edi
loopp:
cmp byte ptr[ebx],30h
jl okok
cmp byte ptr[ebx],39h
jg gnum
inc byte ptr[edi]
jmp short okok
gnum:
cmp byte ptr[ebx],41h
jl okok
cmp byte ptr[ebx],5ah
jg okok
inc byte ptr[edi+1]
okok:
inc ebx
loop loopp
用
汇编
语言实现从1加到
100
(1+2+...+
100
)
这篇博客介绍了如何使用
汇编
语言计算1到
100
的和,最终得到的十六进制结果是13ba,等价于十进制的5050。
汇编
作业一 使用循环计算1-
100
累加结果
本文介绍两种使用
汇编
语言计算1到
100
累加和的方法。第一种方法采用循环累加,将结果存入指定内存地址;第二种方法利用等差数列求和公式进行优化计算,提高了计算效率。
【
汇编
程序】实现1-
100
偶数求和
本文通过C语言和
汇编
代码展示了1-
100
偶数求和的实现过程。首先展示C语言代码,然后转换为
汇编
语言,同时解释了寄存器与C语言变量的对应关系,并提供了编译运行后的结果。
汇编
语言编写程序从1加到
100
要求使用循环结构。
本文介绍了一种使用
汇编
语言实现从1加到
100
的程序设计方法,通过循环结构进行累加操作。程序首先初始化AX寄存器为0,设置CX寄存器的循环次数为
100
,然后在循环中不断将CX的值加到AX上,直到CX递减至0。最终,将AX中的结果存储到SUM变量中,并通过调用4CH号功能返回到DOS操作系统。
C51
汇编
和C语言编写从1加到
100
这篇博客介绍了如何使用Keil5创建首个51单片机的
汇编
程序,从新建项目、选择设备到编写1到
100
的加法程序,详细解析了程序的每一步。涵盖了启动文件、子程序编写、主程序逻辑以及C语言版本的对比。同时,解释了关键指令和寄存器的作用,以及程序调试过程。
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章