注册 登录
编程论坛 汇编论坛

锻炼汇编新手的几个程序题[不断更新中]

hero2007 发布于 2007-05-14 23:06, 742 次点击

我是这学期开始学程序,感觉我们汇编老师的教学方法很好。
自己编了好几个小汇编程序,熟悉了很多基本指令、锻炼了思维...,总之感觉自己得到了一定的锻炼。
以下是我们老师出布置给我们做过的一些程序题,很有价值,望新手自己独立思考,老手不要随便公布答案。


题目(1)

DATAS SEGMENT
STR DB"please input a string:$"
BUF DB 20
DB ?
DB 20 DUP (?)
CRLF DB 0AH,0DH,"$";此处输入数据段代码
DATAS ENDS

STACKS SEGMENT STACK
DB 200 DUP(?) ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
LEA DX,STR
MOV AH,9
INT 21H
MOV AH,10
LEA DX,BUF
INT 21H
LEA DX,CRLF
MOV AH,9
INT 21H
MOV CL,BUF+1
LEA SI,BUF+2
NEXT: MOV DL,[SI]
MOV AH,2
INT 21H
INC SI
DEC CL
JNZ NEXT;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START

以上是从键盘输入字符串并输出该字符串的简单汇编程序,要求将程序中的2号调用改成9号调用使该程序同样能实现输入任意字符串换行输出同样的字符串。



题目(2)

DATAS SEGMENT
TABLE DB 0,1,4,9,16,25,36,49,64,81
NUMB DB 6
RESULT DB ?
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
LEA DI,TABLE
LEA BX,NUMB
MOV AX,0
MOV AL,[BX]
ADD DI,AX;
MOV AL,[DI]
LEA BX,RESULT
MOV [BX],AL
HLT
MOV AH,4CH
INT 21H
CODES ENDS
END START

判断程序功能(在DEBUG里查看)
判断出该程序功能后,改写,输入0~9的数字输出其平方。



......等待更新→......等待更新→......等待更新→......等待更新→......等待更新→......等待更新→
......等待更新→......等待更新→......等待更新→......等待更新→......等待更新→......等待更新→




[此贴子已经被作者于2007-5-14 23:08:08编辑过]

4 回复
#2
bolomir2007-05-14 23:52

LZ也是湖北武汉的吗?很有幸在一个论坛上啊 呵呵 学习了

#3
xieriguo2007-05-15 15:22

哈哈我也是刚这学了一点点,能给更多的程序吗?

#4
I喜欢c2007-05-15 17:35
怎么没有人帖答案?
#5
hero20072007-05-15 22:16
不要贴答案,需要的进我博客找。
http://blog.sina.com.cn/xuezhide
1