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

Casl汇编语言辅导

 2008-04-28 09:33:27 来源:WEB开发网   
核心提示:5、1997年试题四[程序说明]本子程序将一个非负二进整数翻译成五位十进整数字符,进入子程序时,Casl汇编语言辅导(10),在 GR0 中给出被翻译的非负二进整数,在 GR2 中给出存放五位十进整数数字字符的起始地址,即下标 GR1=5,因此这一句为:LEA GR3,十进制数字字符用 ASCII 码表示,当结果小于五

5、1997年试题四

[程序说明]

本子程序将一个非负二进整数翻译成五位十进整数字符。

进入子程序时,在 GR0 中给出被翻译的非负二进整数,在 GR2 中给出存放五位十进整数数字字符的起始地址。

十进制数字字符用 ASCII 码表示。当结果小于五位时,左边用空白符替换;当二进整数为零时,在(GR2)+4 中存放 0 的 ASCII 码。

数字字符 0 至 9 的 ASCII 码是 48 至 57,空白符的 ASCII 码是 32。

[程序]

START 1
LEA GR1,0 2
LEA GR3,32 3
L1 ____(1)____ 4
JPZ L2 5
ST GR3,0,GR2 6
LEA GR2,1,GR2 7
LEA GR1,1,GR1 8
LEA GR4,-4,GR1 9
JNZ L1 10
L2 ___(2)___ 11
L3 ___(3)___ 12
JMI L4 13
SUB GR0,SNO,GR1 14
LEA GR3,1,GR3 15
___(4)___ 16
L4 ST GR3,0,GR2 17
LEA GR2,1,GR2 18
LEA GR1,1,GR1 19
___(5)___ 20
JNZ L2 21
RET 22
SNO DC 10000 23
DC 1000 24
DC 100 25
DC 10 26
DC 1 27
END 28

[解]

这是一个典型的二化十汇编语言题例,其算法是将被转换的二进制数依次被 10i(i为 4、3、2、1、0)除,所得的商即为该十进制数位的值,其余数再被下一个 10i 除。一般用减法代替除法,即一边减10i,一边计数器加 1,直到不够减再进行下一位 10i-1

1)寄存器分配:GR0:被转换数;GR2:存放五位十进整数数字字符的起始地址。

GR1:数位计数器(兼作SNO内存数组的下标)

GR3:在初始化时放空格的ASCII码(48),在转换时作某一位的数码计数器(初始值为 0 的 ASCII 码 48)

2)SNO 内存变量依次存放 104、103、102、101、100

3)第 2~9 行为初始化程序,在 GR0<10i 时,对应的十进整数数字字符单元放空格(当结果小于五位时,左边用空白符替换),此过程一直进行到 GR0≥10i 或 GR1= 4(个位)。因此____(1)____应为 "CPL GR0,SNO,GR1"。

4)L2 开始进行除法(减法)。GR3 作某一位的数码计数器。从 L4 可看出,该计数值直接放到结果单元 [GR2],而按题意所放的是 ASCII 码,所以其初始值应为 0 的 ASCII 码 48。因此___(2)___为:

LEA GR3,48

5)根据算法,GR0≥10i 才做减法,故____(3)____还是 "CPL GR0,SNO,GR1"。

6) ___(4)___是 "JMP L3",即继续做这一位的减法,直至 GR0<10i

7)L4 后 3 行是某一位结束处理:结果送到地址指针 GR2 所指的存放单元;地址指针 GR2 加 1;SNO 内存数组的下标 GR1 加 1。

8)___(5)___应该是判断除法是否做到个位结束。即下标 GR1=5,因此这一句为:

LEA GR3,-5,GR1

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

Tags:Casl 汇编语言 辅导

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