微机原理黄冰版--作业答案

MOV DI,0 ;目标串指针->DI SDCMP: MOV AL,SRCBUF[SI] CMP AL,0DH JZ NSEND

MOV DSTBUF[DI],AL ;不等于0DH,保存数据,修改SI、DI INC DI

NSEND: INC SI ;等于0DH,不保存数据,修改SI LOOP SDCMP MOV AH, 4CH INT 21H CODE ENDS END START

3.17 已知有n个元素存放在以BUF为首址的字节存储区中,试统计其中负元素的个数,画出程序框图,编写程序。

DATA SEGMENT

BUF DB 92H,12H,0F3H,23H,87H LEN EQU $-BUF DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN ;比较次数->CX MOV SI,0 ;字节存储区指针 MOV DL,0 ;负元素个数初始化 NEGCMP: MOV AL,BUF[SI] CMP AL,0 JNL C0GE

INC DL ;小于0,个数加1,指针加1 C0GE: INC SI ;不小于0,指针加1 LOOP NEGCMP MOV AH, 4CH INT 21H CODE ENDS END START

3.18 已知以BUF为首址的字存储区中存放着n个有符号的二进制数,试编写程序,将大于等于0的数送以BUF1为首址的字存储区中,将小于0的数送以BUF2为首址的字存储区中,并画出程序框图。

DATA SEGMENT

BUF DW 1212H,0FF12H,3434H,8989H,5656H,9090H LEN EQU ($ - BUF) / 2 BUF1 DW LEN DUP (?) BUF2 DW LEN DUP (?) DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN ;循环次数,即BUF的单元数 MOV BX,0 ;BUF指针初始化 MOV SI,0 ;BUF1指针初始化 MOV DI,0 ;BUF2指针初始化 CLOOP: MOV AX,[BX] ;BUF数据->AX CMP AX,0 JGE TO1

MOV BUF2[DI],AX ;AX<0,AX->BUF2,DI+2->DI,BX+2->BX INC DI

INC D

>>閻忕偞娲栫槐鎴﹀礂閵婏附鐎�<<
12@gma联系客服:779662525#qq.com(#替换为@)