首页
社区
课程
招聘
[旧帖] [求助]汇编的基础问题 0.00雪花
发表于: 2011-4-5 17:18 1010

[旧帖] [求助]汇编的基础问题 0.00雪花

2011-4-5 17:18
1010
我现在想随便输入几个数,有两位也有三位的,之后再进行排序输出。但键盘输入后不是存在AL中吗,怎么才能把它先暂存到别的地方?
还有比如我输入一个两位数23,那么它是不是分别存2、3 的ascII码值?那我怎么才能记录下23?高手帮忙举个例子吧。谢了

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1040
活跃值: (30)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
用mov语句到其他寄存器里,ascii码减去31就是对应的16进制的数字了
2011-4-5 18:41
0
雪    币: 39
活跃值: (2856)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
可以调用int 21h的0Ah功能,举例如下:
data segment
buf db 10, 0, 10 dup (0)
data ends
code segment
assume cs:code, ds:data
main:
mov ax, data
mov ds, ax
mov ah, 0Ah
mov dx, offset buf
int 21h
...
code ends
end main
调用int 21h的0Ah功能后,buf[1]中存放你实际输入的字符数,但不包括最后所敲的回车符;
从buf[2]起就是你具体输入的字符。
buf[0]必须在调用int 21h前赋值,它的值用来限制最多可以输入的字符数(含最后所敲的回车符)。
若对以上程序及解释有不明之处,请进一步参考Ralf Brown的interrupt list。
2011-4-5 18:51
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很有意思帮你顶一顶
2011-4-5 20:06
0
雪    币: 31
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
第一个问题:定义个变量,然后把输入的值暂存到变量。或向楼上说的那样用0ah功能,直接输入到缓冲区。
第 二个问题:楼上说的接收到的还是字符串,是‘2’和‘3’的ASCII值。
你只需要将输入的ASCII值转换为二进制的数值或是十进制的BCD数(你可以看下汇编教材中代码转换那课)。
例子:从键盘输入一个以回车为结束符的十进制数,然后将其转换为机内二进制数
data segment
   num dw 0
   str1  db  "please input a number(1-65535):$"
data ends

code segment
    assume: cs:code ds:data
  start:
           mov ax,data
           mov ds,ax
           mov dx,offset str1
           mov ah,09h
           int 21h
           mov cx,5
    L1:
           mov ah,01h
           int 21h
--------------------------------这一段式ASCII转换为数值
           cmp al,0dh       ;如果是回车就退出
           je exit              
           and al,0fh         ;等同于al-30h
           shl num,1          ;*2
           mov bx,num
           shl num,1          ;*2
           shl num,1          ;*2
           add num,bx       ;+2*num
----------------------------------相当于num*8+num*2=10*num
           mov ah,0                  
           add num,ax   ;加上新输入的一位                  
           loop L1
exit:
           mov ah,4ch
           int 21h
     code ends
  end start
num中存放的就是输入的数值。。。
希望对你有帮助。
2011-4-6 10:44
0
游客
登录 | 注册 方可回帖
返回
//