【发布时间】:2014-04-21 00:04:38
【问题描述】:
我目前正在实施一个程序,该程序接受一个等级值的输入(例如 75),然后输出一个与其对应的字母等级。我已经通过数组/表实现了以下请求的比例:
.data
table BYTE 89d, 'A'
BYTE 79d, 'B'
BYTE 69d, 'C'
BYTE 59d, 'D'
BYTE 0d, 'F'
NumCols = 2
NumRows = 5
user_ip BYTE ?
message1 BYTE "Enter a grade value: ", 0h
message2 BYTE "The Grade of ", 0h
message3 BYTE " Yields A Letter Grade of ", 0h
我正在使用以下代码对这个数组/表格进行排序并输出字母等级。
mov edx, OFFSET message1
call WriteString
call readDec
mov user_ip, al
mov esi, OFFSET user_ip
mov edi, OFFSET table
mov ecx, NumRows
L1:
CMPSB
jae L2
add edi, NumCols
Loop L1
L2:
mov edx, OFFSET message2
call WriteString
mov al, user_ip
call WriteDec
mov edx, OFFSET message3
call WriteString
mov edx, edi
call WriteString
call Crlf
输入 75 时,我会看到:“75 的等级产生 EC 的字母等级;D”。该程序也暂时停止工作。
我相信它与指针和数据大小有关。我的理想目标是将字母等级的值存储在一个变量中,但鉴于使用指针所需的数据大小,我似乎无法找到一种方法。关于如何做到这一点的任何想法?
【问题讨论】:
标签: arrays assembly masm irvine32