+ -
当前位置:首页 → 问答吧 → 刚学汇编,几个程序不懂什么意思,希望有人帮忙翻译一下。

刚学汇编,几个程序不懂什么意思,希望有人帮忙翻译一下。

时间:2010-11-09

来源:互联网

题1:设计程序,完成在屏幕上输出0~9十个数字字符。
A0800
MOV R2,0A  
MOV R0,30  
(0804)CALL 009B  
INC R0  
DEC R2  
JR NZ,0804  
RET  
在命令提示符>下键入命令G0800,屏幕上显示0~9十个数字字符。
题2:设计程序,完成从键盘输入数字字符,并在屏幕上显示。若遇非数字符则结束输入程序。
A0840
MOV R2,30 
MOV R3,39
(0844)CALL 005A
CMP R0,R2
JP C,0850
CMP R3,R0
JP C,0850
CALL 009B
JP 0844
(0850)RET
题3:计算1到10的累加和
A860
MOV R1,0
MOV R2,0A
MOV R3,0
(866)INC R3 
ADD R1,R3
CMP R3,R2
JR NZ,866
RET
运行过后,用R命令看R1中的累加结果。
题4:设计一个完成双倍字长整数相加的程序。
A880
MOV R8,1234 
MOV R9,9678
MOV R10,6789
MOV R11,8888
ADD R9,R11
ADC R8,R10
RET
运行过后,用R命令查看放在R8、R9中的相加结果。
题5:还是双倍字长的整数相加的功能,但两个数与相加结果保存在910开始的主存区中。
E910 (送入参加相加的两个数的初值)
1234 9678 6789 8888
A920
MOV R12,910
MOV R8,[R12]
INC R12
MOV R9,[R12]
INC R12
MOV R10,[R12]
INC R12
MOV R11,[R12]
ADD R9,R11
ADC R8,R10
MOV 1[R12],R8
MOV 2[R12],R9
RET
运行过后,用D910命令看运行结果为:1234 9678 6789 8888 79BF 1F00。这个程序中使用了寄存器间接寻址方式和变址寻址方式。

作者: WIN32long   发布时间: 2010-11-09

熟悉机器指令后,应该比较好理解吧,说说具体哪里不明白

作者: asmlearn   发布时间: 2010-11-10

建议你先好好看看王爽的《汇编语言》

作者: Zimbu   发布时间: 2010-11-10

引用 2 楼 zimbu 的回复:

建议你先好好看看王爽的《汇编语言》

我们汇编还没学,现在在学那个计算机组成与结构那本书,是汇编的先行课应该。

作者: WIN32long   发布时间: 2010-11-10

引用 1 楼 asmlearn 的回复:

熟悉机器指令后,应该比较好理解吧,说说具体哪里不明白

例如第一个总call 009B是什么意思。INC,DEC JR NZ,0804,还有最后一句RET各是什么意思。

作者: WIN32long   发布时间: 2010-11-10