本科微机原理作业

发布 2022-09-04 21:00:28 阅读 7793

燕山大学。

班级:###

学号:###

姓名:###

教师:###

题3-16stack segment stack ;定义作为堆栈段的逻辑段,段名为stack

db 512 dup分配堆栈段的大小,设置为节。

stack ends堆栈段结束。

data segment定义作为数据段的逻辑段,段名为data

msg db 'input a~z:',0dh,0ah

;定义要显示字符。

error db ' not a~z!',0dh,0ah

定义要显示字符。

data ends数据段结束。

code segment 'code' ;定义作为**段的逻辑段,段名为code

assume cs:code,ds:data,ss:stack

确定各个逻辑段的类型。

start: mov ax, data ;程序开始点。

mov ds,ax设置ds指向程序数据段的段地址

mov dx,offset msg ;指定字符串在数据段的偏移地址。

mov ah,09h

int 21h利用功能调用显示信息

l0: mov ah,01h从键盘输入一个字符。

int 21h

cmp al, 61h做减法运算:al-61h

jb l1al低于61h,程序跳转。

cmp al, 7ah做减法运算:al-7ah

ja l1al高于7ah,程序跳转。

mov bl,al将al的内容传送给bl,即al←bl

mov ah,2设置功能号:ah←02h

mov dl,0dh提供入口参数:dl←32h

int 21hdos功能调用:回车。

mov ah,2dos功能调用:换行

mov dl,0ah

int 21h

sub bl,20h减法:bl←bl-20h

mov ah,2设置功能号:ah←02h

mov dl,bldl←bl

int 21hdos功能调用:显示。

mov ax,4c00h

int 21h程序结束点,返回dos

l1: mov ah, 09h提供入口参数:ah←09h

mov dx,offset error ;指定字符串在数据段的偏移地址。

int 21h利用功能调用显示信息。

jmp l0无条件跳转。

code ends**段结束。

end start汇编结束,程序开始点为start

题3-20stack segment stack ;定义作为堆栈段的逻辑段,段名为stack

db 128 dup分配堆栈段的大小,设置为节。

stack ends堆栈段结束。

data segment定义作为数据段的逻辑段,段名为data

bufx dw 1设bufx为字变量1

bufy dw 1设bufy为字变量1

bufz dw 2设bufz为字变量2

data ends数据段结束。

code segment 'code' ;定义作为**段的逻辑段,段名为code

assume cs:code,ds:data,ss:stack

确定各个逻辑段的类型。

start: mov ax,data程序开始点。

mov ds,ax设置ds指向程序数据段的段地址

mov dx,bufx将bufx的内容传送给dx,即dx←bufx

mov ax,bufyax←bufy

mov bx,bufzbx←bufz

cmp dx, ax做减法运算:dx-ax

jnz l1标志zf=0,即dx≠ax时,程序跳转。

cmp dx,bx做减法运算:dx-bx

jnz r1标志zf=0,即dx≠bx时,程序跳转。

mov dl,32h提供入口参数:dl←32h

mov ah,02h设置功能号:ah←02h

int 21hdos功能调用:显示2

done: mov ax, 4c00h

int 21h程序结束点,返回dos

l1: cmp dx,bx做减法运算:dx-bx

jz r1标志zf=1,即dx=bx时,程序跳转。

cmp ax,bx做减法运算:ax-bx

jz r1标志zf=1,即ax=bx时,程序跳转。

mov dl,30hdl←30h

mov ah,02h设置功能号:ah←02h

int 21hdos功能调用:显示0

jmp done无条件转移。

r1: mov dl,31hdl←31h

mov ah,2设置功能号:ah←02h

int 21hdos功能调用:显示1

jmp done无条件转移。

code ends**段结束。

end start汇编结束,程序开始点为start

题3-24stack segment stack ;定义作为堆栈段的逻辑段,段名为stack

db 512 dup分配堆栈段的大小,设置为节。

stack ends堆栈段结束。

data segment定义作为数据段的逻辑段,段名为。

msg db'overflow!',0dh,0ah,'$

;定义要显示字符。

wordsum dwwordsum是没有初值的字变量。

array dw 100 dup(10) ;此处设100个等值的字变量。

data ends数据段结束。

code segment 'code' ;定义作为**段的逻辑段,段名为code

assume cs:code,ds:data,ss:stack

确定各个逻辑段的类型。

start: mov ax,data程序开始点。

mov ds,ax设置ds指向程序数据段的段地址

xor bx,bxbx清零。

mov cx,100cx←100,循环次数为100

lea si,arraysi←array的有效地址。

again: add bx,array[si] ;bx←bx+array:[si]

jnc next标志cf=1,溢出,程序跳转。

mov dx,offset msg ;指定字符串在数据段的偏移地址。

mov ah,9

int 21h利用功能调用显示信息。

jmp done无条件跳转。

next: add si,2si←2

loop againcx减1,只要cx未减至0就循环。

mov wordsum,bx ;wordsum←bx

mov ch,bhch←bh,保存bh,为后续使用。

微机原理作业

微型计算机原理及应用 作业。作业组别 十八。班级 机电一班姓名 学号 作业指导教师 任课教师 实验室教师 作业完成时间 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的个数,并按照数据字节在前...

微机原理作业

微型计算机原理及应用 作业。作业组别 第十一组。班级 10级机控一班。姓名 孙策。学号 100107010140 作业指导教师 李艳文 作业完成时间 2013年4月9日。目录。第一题 1 一 题目分析 1 二 寄存器及主存应用说明 1 三 程序框图 1 四 详细程序 1 五 程序调试情况 2 第二题...