※ 引述《jason12308 (jason12308)》之铭言:
: 我想写的程式功能是:输入一个(0~9999),然後用code view看暂存器BX
: 的内容值是不是和我所输入的数字相符合,就是十进制转16进制,但不用输出
: 用code view看就行了
: 重点是…我打的程式每次都只能输入一个数字,然後run完再输入第二个
: 数值是正确的。
: 但我想一次打完4个数字,然後按下enter(0dh)再让程式run…请大大帮忙修改
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
你应该没看完Int21的AH总列表吧
AH要为0Ah 不是01h
: 程式:
: 是用masm6.11 run
: .8086
: .model small
: .stack 100h
: .data
: mes1 db 'input a num(0~9999)$'
input db 6, 7 DUP (0), '$'
: .code
: .startup
: mov bx,0
: mov ah,09h
: lea dx,mes1
: int 21h
mov ax, @data
mov ds, ax
mov ah, 0Ah
mov dx, OFFSET input
: int 21h
;此区指到input字串 然後作字串转换数值
mov dx, OFFSET input
add dx, 2 ;指向字串起始位置
num_cnt:
mov cl, BYTE PTR DS:[DX]
cmp cl, 0Dh
je quit_num
cmp cl, 30h
jb print_err
cmp cl, 39h
ja print_err
and cl, 0Fh
;bx乘10 然後cl加到bx -> 请自己写
inc dx
jmp num_cnt
print_err:
;当输入值< 30h or >39h 显示输入数值错误 -> 请自己写
: quit_num:
: .exit
: end
大概就是这样了
你只要断点在quit_num 就可以看到bx值
有错误请自己debug
其实还可以判断是否输入超过4位数 或者数值过65535
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.85.221.123
※ 编辑: eentut 来自: 219.85.221.123 (07/18 23:05)
1F:推 jason12308:谢谢你的解答了 07/19 00:05