程序设计方法学04 教师用书_第4章_循环结构 201702
- 格式:pdf
- 大小:2.03 MB
- 文档页数:40
汇编语言程序设计 第四版【课后习题答案】--囮裑為檤第4章 基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。
〔解答〕思路: 首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h 到最高位字节;如为1,送ffh 到最高位字节。
传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成: .model small .stack 256 .dataqvar dq 1234567887654321h .code .startup mov cx,7 mov si,1again: mov al, byte ptr qvar[si] mov byte ptr qvar[si-1],al inc siloop again test al,80h jz ezzmov bl,0ffh jmp done ezz: mov bl,0done: mov byte ptr qvar[7],bl .exit 0 end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。
〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次, 次低位字节至最高位字节依次带 CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。
.model small .stack 256 .dataqvar dq 1234567887654321h4 11 201628.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF 位 mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移 P50 inc siloop again dec dx jnz lpp .exit 0 .end〔习题4.3〕将AX 寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL 、BL 、CL 和DL 寄存器中。
程序设计基础——程序设计的循环结构一、格式For<循环变量>=<初值>To<终值>[Step步长]<循环体>Next<循环变量>二、功能当循环变量的值在初值到终值范围内时,执行一次循环体中的语句块,并使初值增加一个步长。
当循环变量的值不在初值到终值范围内时,就退出循环,执行Next后面的语句。
For循环语句执行的流程图。
执行过程三、说明:(1)<循环变量>:也称循环控制变量,它是一个数值变量,但不能是逻辑值或数组元素。
(2)<初值>、<终值>和<步长>:它们是一个数值表达式。
步长为正数时,表示递增循环,初值小于或等于终值步长为负数时,表示递减循环,初值大于或等于终值步长不可以为0。
步长为1,可以省略不写l。
(3)<循环体>:在For语句和Next语句之间的语句序列,可以是一个或多个语句。
(4)Next:是循环终端语句,在Next后面的循环变量与For语句中的循环变量必须相同。
当只有一层循环时,Next后面的循环变量可略去不写。
(5)For语句又叫做循环说明语句,用来指定循环变量的名称,以及循环变量的初值、终值和步长;循环体是被反复执行的部分(即循环工作部分),它可以由若干条语句所组成;Next,语句又叫做循环终端语句,其作用是改变循环变量的值(即增加一个步长)并控制是否再次执行循环体。
(6)循环执行的次数: n=Int((终值一初值)/步长)(7)For—Next语句可以嵌套使用,嵌套的层数没有限制,其基本要求是:每个循环只有一个惟一的变量作为循环变量;内层循环变量的Next语句必须放在上层循环变量的Next语句之前。
四、循环结构典型例题S=1For i=1 to 9S=2*(s+1)Next i(5)鸡兔同笼鸡兔同笼,共有100条腿,40个头,问鸡有几只,兔有几只? PrivateSub Form_Click()Dim Ji As Integer 'Ji变量表示鸡的个数Dim Tu As Integer 'Tu变量表示兔的个数Dim Leg As Integer 'Leg变量表示腿数For Ji=1 To 40Tu=40-jiLeg=ji*2+Tu*4 '计算腿数If Leg=100 Then '如果腿正好100只,则打印。