帮忙看一下程序。。。

wmg494005678 2008-11-02 07:31:12
题目要求:
编制将键盘输入的十进制数(1--65535)转换为十六位二进制数的的子程序。
入口参数:
DS:SI<-代转换的十进制数的ASCII的首地址
CX<-十进制数的位数
出口参数:
AX<-转换结果(即16位二进制数)

子程序:
--------------------------------------
ABCDB PROC
MOV AX,0
ABCDC1:PUSH CX
MOV CX,10
MUL CX
AND BYTE PTR[SI],0FH
ADD AL,[SI]
ADC AH,0
INC SI
POP CX
LOOP ABCDC1
RET
ABCDB ENDP
-------------------------------------
主要是AND BYTE PTR[ST],0FH看不懂,我觉得应该是sub,byte ptr[si],30h
呵呵,小弟刚开始学习汇编,忘大侠们多多指点啊,,,
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmg494005678 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gorzen 的回复:]
数字0-9的ASCII码对应为30H-39H.
AND BYTE PTR[ST],0FH 的作用正如楼上各位所说,屏蔽高四位之后30H-39H也就对应成了0-9.
sub,byte ptr[si],30h 运算之后后31H-39H对应的也一样成了0-9.

所以AND BYTE PTR[ST],0FH 在这段程序中本身的作用与 sub,byte ptr[si],30h 完全一样. 只是效率不同.

逻辑运算AND的效率要高于算术指令SUB. 在汇编里头,一般所有逻辑运算比算术运算效率要高.
[/Quote]
谢谢啊,哈哈,那两天脑袋短路了,想歪了,以后还请多多指点啊。。。
gorzen 2008-11-03
  • 打赏
  • 举报
回复
数字0-9的ASCII码对应为30H-39H.
AND BYTE PTR[ST],0FH 的作用正如楼上各位所说,屏蔽高四位之后30H-39H也就对应成了0-9.
sub,byte ptr[si],30h 运算之后后31H-39H对应的也一样成了0-9.

所以AND BYTE PTR[ST],0FH 在这段程序中本身的作用与 sub,byte ptr[si],30h 完全一样. 只是效率不同.

逻辑运算AND的效率要高于算术指令SUB. 在汇编里头,一般所有逻辑运算比算术运算效率要高.

cnzdgs 2008-11-02
  • 打赏
  • 举报
回复
0FH写成二进制是00001111,与0FH就是保留低4位,把高位都清0。
wang0635 2008-11-02
  • 打赏
  • 举报
回复
结果都是把高4位变成0
h13826013646 2008-11-02
  • 打赏
  • 举报
回复
AND BYTE PTR[SI],0FH 是屏蔽高四位

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧