
1.一个32位数存放在以数据段的BUF单元开始的位置。编写子程序统计该数中含“1”的个数,并将其结果存入RSL
字节单元。2.在0200H单元中有一个数x,利用移位和相加的办法,使x×10(假定x×10>255)后送回原单元。3.编写子程序。将AL中的二进制数转换成对应的ASCII...
字节单元。
2.在0200H单元中有一个数x,利用移位和相加的办法,使x×10(假定x×10>255)后送回原单元。
3.编写子程序。将AL中的二进制数转换成对应的ASCII码(置于AL中)返回。主程序调用子程序实现上述功能。
以上是三个小问题,刚学汇编,不是很懂,请帮忙写一下,希望可以加上些注释,或者思路解析,急求,谢谢了! 展开
2.在0200H单元中有一个数x,利用移位和相加的办法,使x×10(假定x×10>255)后送回原单元。
3.编写子程序。将AL中的二进制数转换成对应的ASCII码(置于AL中)返回。主程序调用子程序实现上述功能。
以上是三个小问题,刚学汇编,不是很懂,请帮忙写一下,希望可以加上些注释,或者思路解析,急求,谢谢了! 展开
1个回答
展开全部
1.
;INPUT:
; LEA SI,BUF
;OUTPUT
; AX
PROC PROC1
PUSH CX
PUSH DX
MOV CX,[SI]
MOV DX,[SI+1];加载数据
XOR AX,AX;计数器清零
CN:
SHR CX,1;地位移入CF
ADC AX,0;计数
JCXZ NX;本次计数结束
JMP CN;继续本次计数
NX:
TEST DX,DX;高16位是否已统计?
JE RETURN;是,则全部统计结束
MOV CX,DX;否,则传送高16位到CX
XOR DX,DX;表明高16务已统计过
JMP CN;统计高16位
RETURN:
POP DX
POP CX
RET
PROC1 ENDP
2.
X*10=X*8+X*2=X<<3+X<<1
3.
X|30H
;INPUT:
; LEA SI,BUF
;OUTPUT
; AX
PROC PROC1
PUSH CX
PUSH DX
MOV CX,[SI]
MOV DX,[SI+1];加载数据
XOR AX,AX;计数器清零
CN:
SHR CX,1;地位移入CF
ADC AX,0;计数
JCXZ NX;本次计数结束
JMP CN;继续本次计数
NX:
TEST DX,DX;高16位是否已统计?
JE RETURN;是,则全部统计结束
MOV CX,DX;否,则传送高16位到CX
XOR DX,DX;表明高16务已统计过
JMP CN;统计高16位
RETURN:
POP DX
POP CX
RET
PROC1 ENDP
2.
X*10=X*8+X*2=X<<3+X<<1
3.
X|30H
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询