WEB开发网
开发学院软件开发汇编语言 Casl汇编语言辅导 阅读

Casl汇编语言辅导

 2008-04-28 09:33:27 来源:WEB开发网   
核心提示:4、1998年试题四[程序说明]本程序是统计字符串中数字字符"0"至"9"的出现次数,字符串中的每个字符是用ASCII码存贮,Casl汇编语言辅导(9),一个存贮单元存放两个字符,每个字符占8位二进位,程序中,故(5) 为:"LEA GR1,1,被统计的字符串从左至右存

4、1998年试题四

[程序说明]

本程序是统计字符串中数字字符"0"至"9"的出现次数。

字符串中的每个字符是用ASCII码存贮。一个存贮单元存放两个字符,每个字符占8位二进位。

程序中,被统计的字符串从左至右存放在STR开始的连续单元中,并假定其长度不超过200,字符串以'·'符作为结束。NCH开始的10个单元存放统计结果。

START MIN 1
MIN LEA GR2,9 2
LEA GR0,0 3
L1 _ (1) _ 4
LEA GR2,-1,GR2 5
JPZ L1 6
LEA GR4,0 7
LEA GR1,0 8
L2 LD GR2,STR,GR1 9
EOR GR4,C1 10
JNZ RL 11
_ (2) _  12
RL SR GR2,8 13
LEA GR3,0,GR2 14
SUB GR3,C9 15
JNZ L4 16
L3 LEA GR3,0,GR2 17
SUB GR3,CO 18
JM1 L5 19
LEA GR2,1 20
_(3)_ 21
_(4)_ 22
L4 LEA GR4,0,GR4 23
JNZ L2 24
_(5)_ 25
JMP L2 26
L5 SUB GR2,C 27
JNZ L4 28
EXIT 29
C1 DC 1 30
C DC '·' 31
C0 DC '0' 32
C9 DC '9' 33
STR DS 200 34
NCH DS 10 35
END 36

[解]

1)第2~8行(L2以前)是初始化程序,其中第2~6行是把计数器存放单元NCH开始的十个单元清零。地址指针是GR2(递减),故((1))为:ST GR0,NCH,GR2

2)从第 8、9 行看出 GR1 是地址指针(相对于 STR)。GR2是工作单元(要处理的字符)

3)因一个字放两个字符,故GR3用作高低字节标志。起始值为0,先处理高字节,第10行指令"EOR GR4,C1"一方面判断是否第一次(结果非0),并将GR4置1。

第一次处理高字节,用逻辑右移指令将高8位内容移到低8位(高8位置0)。

第二次处理低字节,用先逻辑左移再逻辑右移指令将高8位内容置0,故(2)为:

SLL GR2,8

4)在处理过程又用 GR3 作临时工作单元,即把GR2内容送给GR3再处理。处理时先判是否>"9"(不计数)。然后减以 "0" ,使 GR3 变成 0~9。

5)计数处理是在第 21、22、23 三行中完成。使 NCH 开始的 10 个单元中与 GR3 对应的那个单元加1。因加法指令的目的操作数只能是寄存器,所以先给 GR2 送 1(第 21 行),再将 NCH 对应单元内容加到GR2 中,再将 GR2 内容送回 NCH 对应单元(采用 GR3 变址寻址)。故34为:"ADD GR2,NCH,GR3"及"ST GR2,NCH,GR3"。

6)在一个字的第二次处理后(用第 24、25 行判断),要修改字符串的地址指针 GR1(加1)。故  (5为:"LEA GR1,1,GR1"。

上一页  4 5 6 7 8 9 10 11  下一页

Tags:Casl 汇编语言 辅导

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接