实验二汇编语言逻辑控制。
实验说明:在进行实验之前,熟悉掌握汇编程序的逻辑控制的指令和方法,这涉及到顺序、分支(选择)和循环,基本的指令包括无条件跳转和条件跳转指令、循环loop及其变种指令等,这些都是程序设计的基本技术。
第一部分:常用操作指令i
一.算术运算类指令及顺序程序设计。
1、实验目的:了解和掌握加、减在程序设计中的用法和应注意的问题,以及顺序程序设计的方法。
2、实验内容:
1)在debug系统状态下,分别编制、调试并记录以下加、减程序段的每一条指令的运**况:注意实验的结果和手工计算的结果相比较,看看是否一致。
加法。mov ax,2389 ┃
mov bx,0cedf ┃
add ax,bx ┃
减法。mov ax,2389 ┃
mov bx,0cedf ┃
sub ax,bx ┃
高低位分别加法。
mov ax,2389 ┃
mov bx,0cedf ┃
add ah,bh ┃
add al,bl ┃
带进位的加法。
mov ax,2389 ┃
mov bx,0cedf ┃
add ah,bh ┃
adc al,bl ┃
实验中使用到了debug的汇编a和单步跟踪t命令,注意相关寄存器和标志位的变化。
二.逻辑及移位类指令与顺序程序设计。
1、实验目的:了解和掌握逻辑指令、移位指令的功能和作用,以及此类指令的使用方法。
2、实验内容:具体了解和掌握逻辑指令、移位指令在使用时应注意的问题。
(1)在debug系统状态下,分别编制、调试并记录以下逻辑指令程序段的每一条指令的运**况:注意实验的结果和手工计算的结果相比较,看看是否一致。理解and、or、xor的作用。
mov al,41 ┃
or al,20 ┃
mov al,66 ┃
and al,0df ┃
mov ax,5678 ┃
xor ax,ax ┃
mov ax,0ff00 ┃
not ax ┃
mov ax,1234 ┃
test ax,1 ┃
test ax,10 ┃
test ax,80 ┃
test指令的作用是。
2)在debug系统状态下,分别编制、调试并记录以下移位指令程序段的每一条指令的运**况:
mov ax,420 ┃
shl ax,1 ┃
mov ax,240 ┃
mov cl,4 ┃
shl ax,cl ┃
mov ax,8000 ┃
mov cl,4 ┃
shr ax,cl ┃
mov ax,8000 ┃
mov cl,4 ┃
sar ax,cl ┃
mov ax,8086 ┃
mov cl,4 ┃
rol ax,cl ┃
mov ax,8086 ┃
mov cl,4 ┃
ror ax,cl ┃
clcmov ax,8086 ┃
mov cl,4 ┃
rcl ax,cl ┃
stcmov ax,8086 ┃
mov cl,4 ┃
rcr ax,cl ┃
rol与rcl、ror与rcr的区别在于rol和ror是将寄存器中的内容直接进行移位,而rcl和rcr是将寄存器中的内容与___中的内容一起进行移位,因此参加移位的数据比原来的数据位数。
第二部分:分支与循环控制。
一.转移类指令与分支型程序设计。
1、实验目的:了解和掌握比较指令、无条件/有条件转移类指令的功能、作用和方法。学会分支型程序设计的方法。学习汇编语言输出输入语句的设计。
2、实验要求:具体了解和掌握比较指令、无条件/有条件转移类指令的使用和在使用时应注意的问题,学习分支型程序设计的一般方法。
1)用字符搜索法确定字符串长度:
用a命令在100h开始的内存处键入下列程序:
jmp start
db 'this is the program to measure'
db 'the length of a string!$'
start: mov bx,102
mov al,24
xor cl,cl
lop: cmp al,[bx]
jz exit
inc bx
inc cl
jmp lop
exit: int 3
用g命令运行此程序,并检查cl的统计长度是否与你自己统计的实际长度是否一样?
2)16进制数化ascii码的一般方法(显示内存内容)
用a命令在100h处键入下列程序:
mov si,0
mov bl,10
lop: movdl,[si]
mov cl,4
shr dl,cl
cmp dl,0a
jc j1
add dl,7
j1: add dl,30
mov ah,2
int 21
mov dl,[si]
and dl,0f
cmp dl,0a
jc j2
add dl,7
j2: add dl,30
mov ah,2
int 21
mov dl,20
mov ah,2
int 21
inc si
dec bl
jnz lop
int 20
1、在直接运行,应在屏幕上显示出内存从0000h开始的16个字节的内容,若有错误,用debug检查之。
2、自编程序:修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ascii字符,07-0d的控制字符用'.'代替。
3)综合程序(选做)
测量一字符串长度,并用16进制数显示之
程序: jmp start
db 'this is a program to measure the length of a string。'
db 0d,0a
db 'the length of the string is: $
start: mov ah,9
mov dx,102
int 21
mov bx,101
mov al,'$
mov dh,ff
lop: inc bx
inc dh
cmp al,[bx]
jnz lop
mov ch,2
mov cl,4
lop1: rol dh,cl
mov dl,dh
and dl,0f
add dl,30
cmp dl,3a
jc j add dl,7
j: mov ah,2
int 21
dec ch
jnz lop1
int 20
键入此程序,直接运行之,若未出现预期结果,用debug检查有否错误?
二、循环控制类指令与循环程序设计。
1、实验目的:了解和掌握循环控制类指令的功能、作用和方法。学会循环程序设计的方法。学习汇编语言输出输入语句的设计。
2、实验要求:具体了解和掌握循环控制类指令的使用和在使用时应注意的问题,学习循环程序设计的一般方法。
1)求累加和程序:
程序: movbx,1000
movcx,10
subax,ax
lop: add al,[bx]
adcah,0
incbx
j: loop lop
int 3
步骤: 1)用a命令将程序键入到100h开始的内存中,在键入时记下标号lop和j的实际地址,在键入loop指令时lop用实际地址值代替。
7)用e命令在内存地址1000h处键入16个数字
8)用命令g=100 j(j用实际地址代替),使程序运行并停在断点j上,检查ax,bx的值是否符合你的预计值。
微机原理试题
中南大学考试试卷。2012 2013学年上学期时间110分钟 2013年1月10日。微型计算机原理与接 术课程48学时3学分考试形式 闭卷 专业年级 自动化 电气09级总分100分,占总评成绩70 注 此页不作答题纸,请将答案写在答题纸上。一 填空题 本题20分,每空1分 cpu对i o端口采用单独...
微机原理试题
微机原理考试试题纸 a卷 课程名称微机原理与接 术专业班级。题号一二三四五六七 十总分题分。备注 学生不得在试题纸上答题 含填空题 选择题等客观题 一 选择题 每题2分,共20分 微处理器的存储器寻址空间为 a 64kb b 1mb c 4gb d 64tb 2 串行接口8251a有 端口地址。a ...
微机原理试题
微机试题。一 选择题 每小题1分,共10分 1.8086执行程序时,对存储器进行访问时,物理地址可由 组合产生。a cs和ip b ss和ip c ds和ip d cs和bp 2 16位pc机中整数的有效范围是。a 32768 32767b 32767 32767 c 0 65535d 32768 ...