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

各位大哥帮小弟做个汇编小程序拉,拜托拉,最好有流程图..

发布网友 发布时间:2022-04-26 21:44

我来回答

2个回答

热心网友 时间:2023-11-06 20:39

DSEG SEGMENT
msgi db "please input a string:$";显示信息,提示输入一串字符
buf db 100,0,100 p (?);输入字符串缓冲区
digit db 100 p (?);数字字符缓冲区
leter db 100 p (?);字母字符缓冲区
other db 100 p (?);其它字符缓冲区
dn db ?;数字字符个数
ln db ?;字母字符个数
on db ?;其它字符个数
msgd db 0dh,0ah,"digits are:$";显示信息,提示数字字符显示
msgl db 0dh,0ah,"leters are:$";显示信息,提示字母字符显示
msgo db 0dh,0ah,"others are:$";显示信息,提示其它字符显示
msgdn db 0dh,0ah,"digits:$";显示信息,提示数字字符个数显示
msgln db 0dh,0ah,"leter :$";显示信息,提示字母字符个数显示
msgon db 0dh,0ah,"other:$";显示信息,提示其它字符个数显示
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
lea dx,msgi;显示信息,提示输入一串字符
mov ah,9
int 21h

lea dx,buf;输入字符串
mov ah,0ah
int 21h

lea si,buf
mov cl,[si+1];输入字符实际个数存入CX中
mov ch,0
add si,2;输入字符起始地址存入SI
lea bx,digit;数字字符起始地址存入BX
lea di,leter;字母字符起始地址存入DI
lea bp,other;其它字符起始地址存入BP
fenlei:
mov al,[si];取出一个字符

cmp al,30h;判断该字符是否为数字
jb oth
cmp al,39h
ja ulet
mov [bx],al;若为数字字符,则存入相应缓冲区
inc bx
inc dn;并将数字字符个数加1
jmp next

ulet:
cmp al,41h;判断该字符是否为大写字母
jb oth
cmp al,5ah
ja llet
mov [di],al;若为大写字母字符,则存入相应缓冲区
inc di
inc ln;并将字母字符个数加1
jmp next

llet:
cmp al,61h;判断该字符是否为小写字母
jb oth
cmp al,7ah
ja oth
mov [di],al;若为小写字母字符,则存入相应缓冲区
inc di
inc ln;并将字母字符个数加1
jmp next

oth:
mov ds:[bp],al;为其它字符,则存入相应缓冲区
inc bp
inc on;并将其它字符个数加1

next:
inc si;调整地址,指向下一个字符
loop fenlei;循环次数为实际输入字符个数

mov byte ptr [bx],'$';在数字字符串末尾加'$',目的用9号中断显示该串
mov byte ptr [di],'$';在字母字符串末尾加'$',目的用9号中断显示该串
mov byte ptr ds:[bp],'$';在其它字符串末尾加'$',目的用9号中断显示该串

lea dx,msgd;显示数字字符
mov ah,9
int 21h
lea dx,digit
mov ah,9
int 21h

lea dx,msgl;显示字母字符
mov ah,9
int 21h
lea dx,leter
mov ah,9
int 21h

lea dx,msgo;显示其它字符
mov ah,9
int 21h
lea dx,other
mov ah,9
int 21h

lea dx,msgln;显示数字字符个数
mov ah,9
int 21h
mov bl,dn
call disp;以十进制形式显示个数

lea dx,msgln;显示字母字符个数
mov ah,9
int 21h
mov bl,ln
call disp

lea dx,msgon;显示其它字符个数
mov ah,9
int 21h
mov bl,on
call disp

mov ah,1;按任意键退出
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP

disp proc near
mov ch,2
rotate:
mov cl,4
rol bl,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
disp endp
CSEG ENDS
END MAIN

热心网友 时间:2023-11-06 20:39

DSEG SEGMENT
msgi db "please input a string:$";显示信息,提示输入一串字符
buf db 100,0,100 p (?);输入字符串缓冲区
digit db 100 p (?);数字字符缓冲区
leter db 100 p (?);字母字符缓冲区
other db 100 p (?);其它字符缓冲区
dn db ?;数字字符个数
ln db ?;字母字符个数
on db ?;其它字符个数
msgd db 0dh,0ah,"digits are:$";显示信息,提示数字字符显示
msgl db 0dh,0ah,"leters are:$";显示信息,提示字母字符显示
msgo db 0dh,0ah,"others are:$";显示信息,提示其它字符显示
msgdn db 0dh,0ah,"digits:$";显示信息,提示数字字符个数显示
msgln db 0dh,0ah,"leter :$";显示信息,提示字母字符个数显示
msgon db 0dh,0ah,"other:$";显示信息,提示其它字符个数显示
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
lea dx,msgi;显示信息,提示输入一串字符
mov ah,9
int 21h

lea dx,buf;输入字符串
mov ah,0ah
int 21h

lea si,buf
mov cl,[si+1];输入字符实际个数存入CX中
mov ch,0
add si,2;输入字符起始地址存入SI
lea bx,digit;数字字符起始地址存入BX
lea di,leter;字母字符起始地址存入DI
lea bp,other;其它字符起始地址存入BP
fenlei:
mov al,[si];取出一个字符

cmp al,30h;判断该字符是否为数字
jb oth
cmp al,39h
ja ulet
mov [bx],al;若为数字字符,则存入相应缓冲区
inc bx
inc dn;并将数字字符个数加1
jmp next

ulet:
cmp al,41h;判断该字符是否为大写字母
jb oth
cmp al,5ah
ja llet
mov [di],al;若为大写字母字符,则存入相应缓冲区
inc di
inc ln;并将字母字符个数加1
jmp next

llet:
cmp al,61h;判断该字符是否为小写字母
jb oth
cmp al,7ah
ja oth
mov [di],al;若为小写字母字符,则存入相应缓冲区
inc di
inc ln;并将字母字符个数加1
jmp next

oth:
mov ds:[bp],al;为其它字符,则存入相应缓冲区
inc bp
inc on;并将其它字符个数加1

next:
inc si;调整地址,指向下一个字符
loop fenlei;循环次数为实际输入字符个数

mov byte ptr [bx],'$';在数字字符串末尾加'$',目的用9号中断显示该串
mov byte ptr [di],'$';在字母字符串末尾加'$',目的用9号中断显示该串
mov byte ptr ds:[bp],'$';在其它字符串末尾加'$',目的用9号中断显示该串

lea dx,msgd;显示数字字符
mov ah,9
int 21h
lea dx,digit
mov ah,9
int 21h

lea dx,msgl;显示字母字符
mov ah,9
int 21h
lea dx,leter
mov ah,9
int 21h

lea dx,msgo;显示其它字符
mov ah,9
int 21h
lea dx,other
mov ah,9
int 21h

lea dx,msgln;显示数字字符个数
mov ah,9
int 21h
mov bl,dn
call disp;以十进制形式显示个数

lea dx,msgln;显示字母字符个数
mov ah,9
int 21h
mov bl,ln
call disp

lea dx,msgon;显示其它字符个数
mov ah,9
int 21h
mov bl,on
call disp

mov ah,1;按任意键退出
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP

disp proc near
mov ch,2
rotate:
mov cl,4
rol bl,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
disp endp
CSEG ENDS
END MAIN

热心网友 时间:2023-11-06 20:40

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code,es:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Enter_Chr endp
; -----------------------------------------
; 功能:输出回车换行
Enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Enter_CTLF endp
; -----------------------------------------
; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
POP CX
POP BX
POP AX
RET
GetCursor EndP
; -----------------------------------------
; 功能:置光标位置
; 入口:DH=行号,DL=列号
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
Dec_ASCII EndP
; -----------------------------------------
prompt_Str db 'Please input a string: $' ;提示输入字符串
DIGIT_Str db 13,10,13,10,'Digit are: $' ;显示数字字符串
LETER_Str db 13,10,'Letter are: $' ;显示字母字符串
OTHER_Str db 13,10,'Other are: $' ;显示其它字符字符串
DIGIT db ? ;<数字字符个数>
LETER db ? ;<字母字符个数>
OTHER db ? ;<其它字符个数>
Cursor_Posi dw 3 p(?) ;分类显示字符串光标位置
DIGIT_Num db 13,10,13,10,'DIGIT: $' ;提示显示数字字符数
LETER_Num db 13,10,'LETER: $' ;提示显示字母字符数
OTHER_Num db 13,10,'OTHER: $' ;提示显示其它字符字符数
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Output prompt_Str ;提示输入一串字符
lea dx,Temp_Str ;字符串缓冲区地址
mov ah,0ah
int 21h
Output DIGIT_Str ;数字字符串
call GetCursor ;取光标位置
mov Cursor_Posi,dx ;保存显示数字字符串光标位置
Output LETER_Str ;字母字符串
call GetCursor ;取光标位置
mov Cursor_Posi[2],dx ;保存显示字母字符串光标位置
Output OTHER_Str ;其它字符串
call GetCursor ;取光标位置
mov Cursor_Posi[4],dx ;保存显示其它字符串光标位置
cld ;清方向标志,使变址寄存器增值
lea si,Temp_Str[1] ;实际输入的字符数地址
lodsb ;实际输入的字符数
xor ah,ah
mov cx,ax
Class: lodsb ;当前字符→AL
mov ah,al ;al→ah,用于判断
and ah,0dfh ;屏蔽第5位,按大写字母处理
cmp ah,'Z' ;当前字符>'Z'?
ja Other_Chr ;大于,转去按其它字符处理
cmp ah,'A' ;当前字符<'A'?
jb Digit0_9 ;小于,转去判断是否数字
inc LETER ;字母字符计数
lea bx,Cursor_Posi[2] ;字母字符串光标位置在光标位置地址表中的偏移量
jmp Store_Chr
Digit0_9: cmp al,'9' ;当前字符>'9'?
ja Other_Chr ;大于,转去按其它字符处理
cmp al,'0' ;当前字符<'0'?
jb Other_Chr ;小于,转去按其它字符处理
inc DIGIT ;数字字符计数
lea bx,Cursor_Posi ;数字字符串光标位置在光标位置地址表中的偏移量
jmp Store_Chr
Other_Chr: inc OTHER ;其它字符计数
lea bx,Cursor_Posi[4] ;其它字符串光标位置在光标位置地址表中的偏移量
Store_Chr: mov dx,[bx] ;取对应分类字符串显示位置
call SetCursor ;置光标位置
mov dl,al
call Enter_Chr ;显示一个字符
inc byte ptr [bx] ;对应分类字符串显示位置列号增1
loop Class
mov dx,Cursor_Posi[4]
call SetCursor ;置光标位置
Output DIGIT_Num ;提示显示数字字符数
mov al,DIGIT ;取数字字符数
cbw
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Output LETER_Num ;提示显示字母字符数
mov al,LETER ;取数字字符数
cbw
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Output OTHER_Num ;提示显示其它字符字符数
mov al,OTHER ;取其它字符数
cbw
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Temp_Str db 100,0
Code ENDS
END Start ;编译到此结束

热心网友 时间:2023-11-06 20:40

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code,es:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Enter_Chr endp
; -----------------------------------------
; 功能:输出回车换行
Enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Enter_CTLF endp
; -----------------------------------------
; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
POP CX
POP BX
POP AX
RET
GetCursor EndP
; -----------------------------------------
; 功能:置光标位置
; 入口:DH=行号,DL=列号
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
Dec_ASCII EndP
; -----------------------------------------
prompt_Str db 'Please input a string: $' ;提示输入字符串
DIGIT_Str db 13,10,13,10,'Digit are: $' ;显示数字字符串
LETER_Str db 13,10,'Letter are: $' ;显示字母字符串
OTHER_Str db 13,10,'Other are: $' ;显示其它字符字符串
DIGIT db ? ;<数字字符个数>
LETER db ? ;<字母字符个数>
OTHER db ? ;<其它字符个数>
Cursor_Posi dw 3 p(?) ;分类显示字符串光标位置
DIGIT_Num db 13,10,13,10,'DIGIT: $' ;提示显示数字字符数
LETER_Num db 13,10,'LETER: $' ;提示显示字母字符数
OTHER_Num db 13,10,'OTHER: $' ;提示显示其它字符字符数
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Output prompt_Str ;提示输入一串字符
lea dx,Temp_Str ;字符串缓冲区地址
mov ah,0ah
int 21h
Output DIGIT_Str ;数字字符串
call GetCursor ;取光标位置
mov Cursor_Posi,dx ;保存显示数字字符串光标位置
Output LETER_Str ;字母字符串
call GetCursor ;取光标位置
mov Cursor_Posi[2],dx ;保存显示字母字符串光标位置
Output OTHER_Str ;其它字符串
call GetCursor ;取光标位置
mov Cursor_Posi[4],dx ;保存显示其它字符串光标位置
cld ;清方向标志,使变址寄存器增值
lea si,Temp_Str[1] ;实际输入的字符数地址
lodsb ;实际输入的字符数
xor ah,ah
mov cx,ax
Class: lodsb ;当前字符→AL
mov ah,al ;al→ah,用于判断
and ah,0dfh ;屏蔽第5位,按大写字母处理
cmp ah,'Z' ;当前字符>'Z'?
ja Other_Chr ;大于,转去按其它字符处理
cmp ah,'A' ;当前字符<'A'?
jb Digit0_9 ;小于,转去判断是否数字
inc LETER ;字母字符计数
lea bx,Cursor_Posi[2] ;字母字符串光标位置在光标位置地址表中的偏移量
jmp Store_Chr
Digit0_9: cmp al,'9' ;当前字符>'9'?
ja Other_Chr ;大于,转去按其它字符处理
cmp al,'0' ;当前字符<'0'?
jb Other_Chr ;小于,转去按其它字符处理
inc DIGIT ;数字字符计数
lea bx,Cursor_Posi ;数字字符串光标位置在光标位置地址表中的偏移量
jmp Store_Chr
Other_Chr: inc OTHER ;其它字符计数
lea bx,Cursor_Posi[4] ;其它字符串光标位置在光标位置地址表中的偏移量
Store_Chr: mov dx,[bx] ;取对应分类字符串显示位置
call SetCursor ;置光标位置
mov dl,al
call Enter_Chr ;显示一个字符
inc byte ptr [bx] ;对应分类字符串显示位置列号增1
loop Class
mov dx,Cursor_Posi[4]
call SetCursor ;置光标位置
Output DIGIT_Num ;提示显示数字字符数
mov al,DIGIT ;取数字字符数
cbw
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Output LETER_Num ;提示显示字母字符数
mov al,LETER ;取数字字符数
cbw
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Output OTHER_Num ;提示显示其它字符字符数
mov al,OTHER ;取其它字符数
cbw
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Temp_Str db 100,0
Code ENDS
END Start ;编译到此结束
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
狐外婆是什么意思? ...都流,有几年了,吃香蕉水果时也流,到底什么原因啊,维生素c也补了也没... 我的牙龈经常出血,刷牙出得最凶,有时候吃香蕉都会出血,请问是什么原 ... 如何通过社交软件添加好友? 过年送礼送购物卡合适吗? 林上的UV能量测试仪的自动和手动模式有什么区别啊?什么情况下用的... 什么是建设银行金卡 建行信用金卡有什么好处 紫外测试仪UV能量计常见问题解答 020028什么卡 C语言写了一个小程序,统计输入字符串长度的。函数调用不太会,请大侠帮忙调试一下 微信小程序获取一个字符串的值 JAVA如何用正则表达式判断一个字符 它必须是数字组成且“-”必须是在数字中间!谢谢 汇编 写小程序 判断字符串是否相等 如何用java编写一段可判断string数组中是否有某个字符串的小程序? 求编一个小程序C++:判断一个数是否是质数,考虑异常情况。 java的一个小程序,判断输入数字的位数,要用到异常处理 JAVA判断字符串的小程序,有点问题! Java 怎样判断输入的不是数字 帮忙看一个java小程序,输入命令行参数,判断是否为正整数 如何用Java正则表达式检测字符串是否是数字组成的 用VB设计小程序,自动判断输入的字符是字母字符、数字字符还是其他字符? ...&#65532; 谁有《楼下的房客》电影资源,求分享 谁有电影楼下的房客的资源 谁有《楼下的房客》电影完整版资源,百度云,迅雷都可以 楼下的房客电影百度云 求一部电影 楼下的房客 求电影 楼下的房客 楼下的房客电影 求楼下的房客电影资源,百度云的 怎么统计一个字符串里各个字符及数字的个数? 会使水冰冷的白凉粉是什么东西? OPPO手机开不了机,一直在重复着开机怎么办? 我跟朋友承包个人的一个分包工地,木工,跟个人老板签的劳务承包合同。只有甲方是老板名字还有身份证号。 oppo手机无限重启三种方法 oppo一直震动重启且无法进入 木工劳务分包(包清工)包给个人可以吗,需要资质吗? 木工是劳务分包还是专业分包 急!急!急!联想笔记本电脑“Q&quot;这个键按不出来了怎们办 手提电脑q键不停自己打出来,怎么办 联想笔记本电脑自动不停按q 为什么我的笔记本电脑从开机就一直按q键 该怎么解决啊!? 由于以前搞过QQ安全验证,现在用手提电脑上Q都要验证,用密码卡或用绑定的手机发信息。请问怎样解除? 笔记本电脑键盘按q出现q1,按w出现w2,是键盘坏了还是怎么回事? 方正小标宋简体字体怎么装到word? 我电脑里所有word文档的“楷体_GB2312”的字体的都变成了“方正小标宋简体&quot; 华为M5可以外接网线吗? Type-C的手机网线转接头去哪里找? 请问华为秘盒可不可以接网线,用有线网口? 华为MatePad平板可以接有线网络吗,买一个OTG网卡转换器的话?