| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4718 人关注过本帖
标题:几个小问题,大神快快出现
只看楼主 加入收藏
阔怀
Rank: 2
等 级:论坛游民
帖 子:19
专家分:27
注 册:2015-1-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
几个小问题,大神快快出现
我是初学者,如何将键入的字(ascii码)转成10进制数值来算(有没有办法直接键入的数字直接算)???又如何将10进制数显示出来(而不是用ascii码显示)???如何求绝对值???另外。re db 24h,58h                    ll db 24,-12,56这些是什么意思????
急救,大神快快出现。。。。
搜索更多相关主题的帖子: 绝对值 如何 
2015-04-29 20:51
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:3 
不知道你要表述什么。你得有代码啊,比如你怎样取得键入的asc码。

能编个毛线衣吗?
2015-04-29 21:48
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:17 
对于楼主依稀描述的几个问题:
1、将键入的字(应该是数字吧)转换为十进制数值。因为数字的ASCII码与实际的数值相差30H,所以可以用输入的数字的ASCII码-30H就可以得到十进制数值;
2、而要将十进制数显示出来,则又必须将十进制数+30H,转化为数字对应的ASCII码,才能显示,因为显卡的显示原理就是这样的:要想让显示器显示某个内容,就必须向显卡的显存提供相对应的ASCII码。如你要显示数字“3”,先将3+30H,得到33H,这就是数字3的ASCII码,然后将该ASCII码输入至显卡显存,从而就可在屏幕上显示出数字“3”;
3、求绝对值,可以先判断该数值的符号位,符号位为0,则绝对值就是其本身代表的数值,如果符号位为1,表示该数是负数,可使用NEG命令(NEG命令对二进制各位求反并加1),这样得到的就是该负数的绝对值;
4、“re db 24h,58h”这是定义了2个字节数据。“db”表示定义的是字节数据,“24H,58H”分别是2个字节的值,“re”是一个标号,既表示单元地址,又表示单元的长度,这里的长度不是说后面定义了几个数据项,而是指在该标号处的内存单元类型:是字节单元还是字单元,或者是双字单元。正因为“re”标号既表示地址,又表示单元的长度,所以“re”就代表一个内存单元,“mov al,re”实际上就是把re所代表内存单元中的数据传送至寄存器al中。

[ 本帖最后由 取名字 于 2015-4-30 06:40 编辑 ]
2015-04-29 23:33
阔怀
Rank: 2
等 级:论坛游民
帖 子:19
专家分:27
注 册:2015-1-31
收藏
得分:0 
回复 3楼 取名字
对于第四个答案我不是很懂,前三个就比较清楚。谢谢啊,第四个能不能再帮我讲解一下,另外对于把Ax的值保存到某个变量(如save),变量怎么定义,怎么存,怎么查找看看有没有存进去?????大神,救我!!!
2015-05-05 10:29
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
    第4个问题涉及到汇编语言中数据定义的问题。最初我们在数据段中这样定义数据:
    db    1    ;db是define byte的缩写,即定义字节,这句向系统申请了一个字节的内存单元空间,并向里面存储了数字1,也可以说是定义一个数据,类型为字节,值为1。
    dw    ?    ;dw是define word的缩写,即定义字,这句向系统申请2个字节的内存单元空间,但未向里面存储内容(用高级语言的术语说就是未赋初值),也可以说是定义了一个数据,类型为字,但未赋值。
    然后我们也可以这样定义数据:
    VAR1    db    1        ;用汇编语言的术语讲,VAR1就是一个标号,标号其实就是一个地址,但在这里,VAR1这个标号不但表示地址,还表示了后面所申请内存单元的长度,所以VAR1实际上就表示DS:[VAR1],即通过VAR1就可以访问到它所指代的内存单元中的内容,也即VAR1=1。在高级语言里,VAR1就是程序定义的变量,初值为1,我们可以像下面这样来使用VAR1:
    mov    al,VAR1        ;将VAR1所指代的内存单元中的内容传送至al寄存器中,用高级语言的术语说就是将变量VAR1的值赋给al。
    mov    VAR1,al        ;将寄存器al中的值传送至VAR1所指代的内存单元中,用高级语言的术语说就是将al的值赋给变量VAR1。
    根据以上的分析,我们就可以这样来理解下面的一些语句:
    VAR2    dw    3        ;定义了一个字型变量VAR2,值为3。
    VAR3    db    1,2,3    ;定义了一个字节型的数组,有3个元素,每个元素的值分别为1,2,3。
    VAR4    dw    ?        ;定义了一个字型变量VAR4,未赋初值。

    以上包括了变量的定义和使用,如果要查看变量中的值,可用DEBUG加载程序,用D命令查看。
    不知道以上分析能否帮到楼主。

[ 本帖最后由 取名字 于 2015-5-5 12:52 编辑 ]
2015-05-05 12:51
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用取名字在2015-5-5 12:51:02的发言:

    第4个问题涉及到汇编语言中数据定义的问题。最初我们在数据段中这样定义数据:
    db    1    ;db是define byte的缩写,即定义字节,这句向系统申请了一个字节的内存单元空间,并向里面存储了数字1,也可以说是定义一个数据,类型为字节,值为1。
    dw    ?    ;dw是define word的缩写,即定义字,这句向系统申请2个字节的内存单元空间,但未向里面存储内容(用高级语言的术语说就是未赋初值),也可以说是定义了一个数据,类型为字,但未赋值。
    然后我们也可以这样定义数据:
    VAR1    db    1        ;用汇编语言的术语讲,VAR1就是一个标号,标号其实就是一个地址,但在这里,VAR1这个标号不但表示地址,还表示了后面所申请内存单元的长度,所以VAR1实际上就表示DS:[VAR1],即通过VAR1就可以访问到它所指代的内存单元中的内容,也即VAR1=1。在高级语言里,VAR1就是程序定义的变量,初值为1,我们可以像下面这样来使用VAR1:
    mov    al,VAR1        ;将VAR1所指代的内存单元中的内容传送至al寄存器中,用高级语言的术语说就是将变量VAR1的值赋给al。
    mov    VAR1,al        ;将寄存器al中的值传送至VAR1所指代的内存单元中,用高级语言的术语说就是将al的值赋给变量VAR1。
    根据以上的分析,我们就可以这样来理解下面的一些语句:
    VAR2    dw    3        ;定义了一个字型变量VAR2,值为3。
    VAR3    db    1,2,3    ;定义了一个字节型的数组,有3个元素,每个元素的值分别为1,2,3。
    VAR4    dw    ?        ;定义了一个字型变量VAR4,未赋初值。

    以上包括了变量的定义和使用,如果要查看变量中的值,可用DEBUG加载程序,用D命令查看。
    不知道以上分析能否帮到楼主。

回答好认真
2015-05-05 13:05
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
谢谢zklhp版主的夸奖。
2015-05-05 15:19
阔怀
Rank: 2
等 级:论坛游民
帖 子:19
专家分:27
注 册:2015-1-31
收藏
得分:0 
回复 7楼 取名字
大概懂了,谢谢你啦,表示欣赏你的为人!!!!!
2015-05-05 18:08
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
以下是引用阔怀在2015-5-5 18:08:21的发言:

大概懂了,谢谢你啦,表示欣赏你的为人!!!!!
谢谢楼主的赞赏!
2015-05-05 21:08
万万切克闹
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-6-10
收藏
得分:0 
回复 3楼 取名字
data segment
     f1 db 1
     f2 db 2
data  ends
code segment
     assume cs:code,ds:data
start: mov ax,data
       mov ds,ax
       xor ax,ax
       add ax,f1
       add ax,f2
       mov dx,ax
       mov ah,2
       int 21h
       mov ah,4ch
       int 21h
code ends
     end start
怎么通过 f1f2让1和2相加呢??上面程序是错误的 求教啊
2015-06-11 00:33
快速回复:几个小问题,大神快快出现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016218 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved