mul 9 add 4,al in al,21h mov ds,dx 这些指令对吗?

 我来答
uikig05
2010-12-25 · TA获得超过486个赞
知道答主
回答量:291
采纳率:100%
帮助的人:188万
展开全部
我只能给你写主程序,其它的自己加吧。
第一题:先定义一个内存缓冲区,然后用dos功能调用
从键盘输入字符串到缓冲区。然后将缓冲区数据分类,
DL存小写字母个数,DH存数字个数,BH存其它字符个数。
BUFF DB 100 ;定义100字节缓冲区
DB ? ;系统填入实际输入字节数
DB 100 DUP(?)
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET BUFF
MOV AH, 0AH ;10号功能调用,从键盘
;输入字符,回车键结束。
INT 21H
MOV BX, DX
MOV CL, [BX+1]
LEA SI, OFFSET BUFF
ADD SI, 2
XOR BX, BX
XOR DX, DX
BEGIN:MOV AX, [SI]
CMP AX, 'z'
JA THREE
CMP AX, 'a'
JL TWO
INC DL
JMP NEXT
TWO: CMP AX, '9'
JA THREE
CMP AX, '0'
JL THREE
INC DH
JMP NEXT
THREE:INC BH
NEXT: INC SI
LOOP BEGIN
MOV AH, 2
INT 21H
MOV DL, 20H
INT 21H
MOV DL, DH
INT 21H
MOV DL, 20H
INT 21H
MOV DL, BH
INT 21H
第二题:先定义缓冲区存放结果,二进制转换为八进制
时,三位二进制为一位八进制,16位共6位;转16进制
时,4位二进制为一位16进制,共4位。显示要用ASCII码,
所以每一位占一个字节,共10个字节。所以至少定义10
字节的缓冲区。
BUFF DB 20 DUP(?) ;定义20字节缓冲区
MOV AX, DATA ;将数据装入AX
MOV DS, AX
LEA DI OFFSET BUFF ;DI指向缓冲区首字节
XOR BX, BX ;BX清零
MOV CL, 9 ;设置循环次序
ROL AX, 1 ;八进制首位转换
RCL BX, 1
JMP NEXT
BEGIN: XOR BX, BX ;八进制其它5位转换
PUSH CL
MOV CL, 3
ONE: ROL AX, 1
RCL BX, 1
LOOP ONE
POP CL
DEC CL
JMP NEXT
BEGIN2:XOR BX, BX ;16进制转换
PUSH CL
MOV CL, 4
TWO: ROL AX, 1
RCL BX, 1
LOOP TWO
POP CL
DEC CL
CMP CL, 0
JE NEXT2
NEXT: AND BX, 30H ;转ASCII码
MOV [DI],BX ;储存
INC DI
CMP CL, 4
JA BEGIN
JL BEGIN2
MOV [DI],20H
INC DI
JMP BEGIN2
NEXT2:MOV DX,OFFSET BUFF ;DX指向缓冲区首字节
MOV AH,9 ;9号功能调用
INT 21H
华瑞RAE一级代理商
2024-04-11 广告
impulse-4-xfxx是我们广州江腾智能科技有限公司研发的一款先进产品,它结合了最新的技术创新和市场需求。此产品以其卓越的性能和高效的解决方案,在行业内树立了新的标杆。impulse-4-xfxx不仅提升了工作效率,还为用户带来了更优... 点击进入详情页
本回答由华瑞RAE一级代理商提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式