问题–在8086微处理器中编写程序, 以确定具有8位n个第二数组的第一数组的相应8位n个元素的模数, 其中大小" n"存储在偏移500中, 并且存储第一数组的个数与偏移501和第二数组的编号从偏移量601开始存储, 并将结果编号存储到第一数组(即偏移量501)中。
示例–
算法–
- 将500存储到SI中, 将601存储到DI中, 并将来自偏移500的数据加载到寄存器CL中, 并将寄存器CH设置为00(用于计数)。
- 将SI的值增加1。
- 从下一个偏移量(即501)加载第一个数字(值)到寄存器AL。
- 将00存储在寄存器AH中。
- 将寄存器AX中的值除以偏移量DI处的值。
- 将结果(寄存器AH的值)存储到存储器偏移SI中。
- 将SI的值增加1。
- 将DI的值增加1。
- 在6之上循环直到寄存器CX变为0。
程序–
内存地址 | 记忆 | 注释 |
---|---|---|
400 | MOV SI, 500 | SI <-500 |
403 | MOV CL, [SI] | CL <-[SI] |
405 | MOV CH, 00 | CH <-00 |
407 | INC SI | SI <-SI + 1 |
408 | MOV DI, 601 | DI <-601 |
40B | MOV AL, [SI] | AL <-[SI] |
40D | MOV AH, 00 | AH <-00 |
40F | DIV [DI] | AX = AX / [DI] |
411 | MOV [SI], AH | AH-> [SI] |
413 | INC SI | SI <-SI + 1 |
414 | INC DI | DI <-DI + 1 |
415 | LOOP 40B | 如果CX!= 0和CX = CX-1则跳至40B |
417 | HLT | 结束 |
说明–
- MOV SI, 500:将SI的值设置为500
- MOV CL, [SI]:将数据从偏移量SI加载到寄存器CL
- MOV CH, 00:将寄存器CH的值设置为00
- INC SI:将SI的值增加1。
- MOV DI, 600:将DI的值设置为600。
- MOV AL, [SI]:从偏移量SI到寄存器AL的加载值
- MOV AH, 00:将寄存器AH的值设置为00。
- DIV [DI]:将寄存器AX的值除以偏移量DI处的内容。
- MOV [SI], AH:将寄存器AH的值存储在偏移量SI处。
- INC SI:将SI的值增加1。
- INC DI:将DI的值增加1。
- LOOP 408:如果CX不为0并且CX = CX-1, 则跳转到地址408。
- HLT:停