燕山大学。
班级:###
学号:###
姓名:###
教师:###
题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 第二题...