燕山大学微机原理作业

发布 2022-09-04 22:37:28 阅读 9326

《微型计算机原理及应用》作业。

作业组别:24

班级:12级机设1班。

姓名:杨亚成。

学号:120104050011

作业指导教师:(任课教师、实验室教师)

陈子明王鑫朱学军张庆玲赵玉勤王志松唐艳华。

作业完成时间:2015/4/12

一. 题24.1问题描述。

内存source处存放着20个ascii码字符,从键盘输入一个字符,若输入的是为‘a’-‘z’之间的字符(例如g),则将source处的20个ascii码字符传送至result处,传送时要求将‘a’-‘z’之间的字符转换成大写字符,而其他字符不变,并统计与输入字符(‘g’)相同的字符的个数,存入变量num中,程序结束;若输入的是其他字符,则在下一行显示‘error!’,程序结束。

1.1寄存器及主存的应用说明。

内存:source处存放待检测的字符。

count处存放字符数量。

result处存放修改过的新的字符。

num处存放与输入字符相同的字符的个数。

error处存放回车换行及字符串error!

寄存器:bx用于使result指向的地址每次加1以存放下一个字符。

al用于存放输入的字符。

si用于存放地址。

dl用于存放si指向的字符。

cx用于计数。

1.2程序框图(见第四页)

1.3详细程序。

model small

stackdata

source db 'abcdgggg456789ab+-*

count equ $-source

result db count dup(?)

num db 0

error db 0dh,0ah,'error!$'

codestartup

xor bx,bxbx清零。

mov ah,1输入一个字符。

int 21h

cmp al,'a输入的字符与a比较,如果比a

jb done小或比z大则跳转至done

cmp al,'z'

ja done

lea si,source把首地址赋值给si

mov cx,countcx赋值循环次数。

again: mov dl,[sisi指向的字符赋值给dl

cmp dl,'a若此字符比a小或比z大,则跳。

jb one转至one

cmp dl,'z'

ja one

cmp dl,al若此字符在a-z之间,则与输入。

jnz two的字符比较,不相等则跳至two

add num,1若相等则num加1

two:sub dl,20h将小写字符转换成大写字符。

one:mov result[bx],dl将此字符存入result处。

inc bx地址加1以存放下一个字符。

inc si指向下一个待检测字符。

loop again循环。

jmp three跳转至three

done:mov dl,0dh回车,换行,显示error!

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h

mov dx,offset error

mov ah,9

int 21h

three结束。

exitend

1.4程序调试情况。

第一次错误:语句one编写如下,mov result,dl

inc result

inc si

loop again

原以为inc result会使地址加1,结果是result存储的值加1,导致第一个数加了20而其他数值没变,运行结果如图:

其中source和result有20个字符,由于**清晰度问题,所以没有全部截图出来。

第二次错误:刚开始给cx赋值为20,而实际应该赋值count,如果source存入21个字符,运行结果将只有20个字符。

正确的运行结果如下图:

二. 题24.2问题描述。

内存中source处存放着一个以0为结束标志的ascii码字符串,该字符串表示的是一个字型有符号整数。请将其转换为对应的有符号整数,存放到自变量result处。转换过程中,若遇到‘0’-‘9’及‘+’以为的字符,或者转换结果超过了字型有符号数的范围(-32768-+32767),则显示‘error!

’,程序结束。

2.1寄存器及主存的应用说明。

内存。source 处存放待检测字符。

result处存放转换后的字型。

error处存放字符串。

寄存器:bx存放取出的数值。

cx存放标志数值。

si存放地址。

2.2程序框图(见第八页)

2.3详细程序。

model small

stackdata

source db '-12345',0

result dw ?

error db 'error!$'

codestartup

lea si,source首地址赋值给si

xor bx,bxbx,dx分别清零。

xor dx,dx

cmp byte ptr[si],0第一个字符是0,则跳转至done

jz done

cmp byte ptr[si若不是0则与‘-’比较。

mov cx,-1cx赋值-1作为标志。

jz one跳转至one

cmp byte ptr[si与‘+’比较。

mov cx,0cx赋值0作为标志。

jz one跳转至one

cmp byte ptr[si],31h若既不是‘-’也不是‘+’则。

jb four与1比较,比1小,跳至four

cmp byte ptr[si],39h若比1大,则与9比较,比9

ja four大,则跳转至four

dec si第一个字符为数字,则si减1

one:inc sisi加1指向下一个字符。

cmp byte ptr[si],0与0比较,相等则结束。

jz two

shl bx,1以下5句将bx通过移位乘10

mov dx,bx但第一次bx为0

shl bx,1

shl bx,1

add bx,dx

mov ax,[sisi指向的数赋值给ax

xor ah,ah只保留低位。

sub ax,30hascii码减30取出第一个数。

add bx,ax赋值给bx

jmp one

two:cmp cx,-1cx与-1比较。

jnz five不相等跳转至five

cmp bx,32768cx=-1,则bx与32768比较。

ja four比32768大则跳转至four

jmp nega否则跳转至nega

five:cmp bx,32767cx=0,则bx与32767比较。

ja four大于32767则跳转至four

jmp three否则跳转至three

nega:not bxbx取反。

add bx,1b加1

three: mov result,bxbx赋值给result

jmp done跳转至done

four: mov dx,offset error显示错误。

mov ah,9

int 21h

done结束。

exitend

2.4程序调试状况。

第一次错误:寄存器ax的高8位没有清零,使ax存储的数据不正确,结果出现错误。

第二次错误:与1和9比较大小时应用它们的ascii码31h和39h,而不是直。

接用1和9。

正确运行结果截图:

三. 题24.3问题描述。

内存中source处存放着一个以0为结束标志的ascii码字符串。请统计该字符串中字母,数字,空格和其他字符的个数,统计结果分别存放到字节型变量result处。

3.1寄存器及主存的应用说明。

内存:source处存放待检测字符串。

result处存放各种字符数量。

寄存器:si存储地址。

cl存放si指向的字符。

3.2程序框图(见第十一页)

3.3详细程序。

model small

stackdata

source db 'abc abc 123 +-0

result db 4 dup(0)

codestartup

lea si,source-1si赋值source的首地址减1

again: inc si地址加1指向下一个字符。

mov cl,[si将指向的字符赋值给cl

cmp cl,0与0比较,如果是0,结束。

jz done

cmp cl,2bh分别于加减乘除比较,如果是其中的。

jz others一个字符,跳转到others

cmp cl,2dh

jz others

cmp cl,2ah

jz others

cmp cl,2fh

jz others

cmp cl,20h与空格比较,相等则跳转到space

jz space

cmp cl,39h以上字符都不是则与9比较,

jbe num小于等于9则跳转到num

jmp words如果以上都不是则为字母,跳转到words

others:

add [result+3],1 ;其他字符数量加1并存到result第四个字节处。

jmp again继续执行搜索下一个字符。

燕山大学微机原理作业

微型计算机原理及应用 班级 14级轧钢2班。姓名 谢文。学号 141101011011 作业指导教师 陈子明王鑫朱学军张庆玲赵玉勤王志松唐艳华。作业完成时间 2016 12 13 一 题24.1问题描述 2 1.1寄存器及主存的应用说明 2 1.2程序框图 2 1.3详细程序 2 1.4程序调试情况...

微机原理作业

微型计算机原理及应用 作业。作业组别 十八。班级 机电一班姓名 学号 作业指导教师 任课教师 实验室教师 作业完成时间 2013年4月17日。目录。1题目一31 1题目分析31.2寄存器的应用说明31.3程序框图31.4详细程序41.5程序调试的情况42题目二42.1题目分析52.2寄存器及主存等的...

微机原理作业

微型计算机原理及应用 作业。作业组别 第30组。班级 12级轧钢二班。姓名 贾闯 学号 120101020023 指导教师 李艳文 完成时间 2015年 05 月。一 题目及题目分析描述及要求。题目 内存中source处存放着10个字节型数据,请记录每个字节数据中二进制位1的个数,并按照数据字节在前...