1、DATA SEGMENT B DB PLEASE ENTER A CHARACTER:$ ;定义变量B,以其为首地址依次存放提示字符串。A DB 5 DUP(?) ;定义变量A,同时开辟连续5个字节空间。DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX LEA DX,B MOV AH,9 INT 21H MOV DL,0DH MOV AH,2 MOV DL,0AH MOV AH,1 DEC AL MOV A,AL INC AL MOV A+1,AL MOV A+2,AL MOV A
2、+3,$ LEA DX,A MOV AH,4CHCODE ENDS END START输出:PLEASE ENTER A CHARACTER: 7(输入) 678(显示) 2.从键盘上接受一个数字字符,如不是,显示“not odd”,否则显示“odd”。 2、若AL 4、否则,输出字符串“ODD”。 5、程序结束。注:S3功能是输出字符串“NOT ODD”。DATA SEGMENT A DB N,OT D定义变量A,以其为首地址依次存放字符串。 CMP AL,0 JB S39 JA S3 LEA DX,A+4 JMP EXIT S3:EXIT:MOV AH,4CH ODD(显示) 第二次作业1
3、. 将以H为首地址的字节存储区中的既能被3整除也能被13整除的无符号整数的个数(假定9)显示出来,同时对应的显示它们分别对应的地址偏移量。(利用多种寻址方式做)(1)变址寻址:BX:作为H为首地址的存储区的地址指针。SI:作为A为首地址的存储区的地址指针。DI: 同上。AX: H DB 3,5,7,78,13,39 N=$-H A DB N DUP(? C DB ? D DB ?,0 E DB ? F DB THE NUMBER IS: G DB 0AH,0DH, I DB ADDRESS OFFSET: START : MOV AX,DATA MOV BX,0 MOV SI,0 MOV DI
4、,0 MOV E,0 L1: CMP BX,N JAE PRINT MOV AL,HBX MOV D,AL MOV AX,WORD PTR D MOV C,3 DIV C CMP AH,0 JNE L2 MOV C,13 INC E MOV ASI,BL ADD ASI,30H INC SI INC BX JMP L1 L2: PRINT: LEA DX,F LEA DX,G ADD E,30H MOV DL,E L3: CMP DI,SI JAE EXIT LEA DX,I MOV DL,ADI MOV DL, INC DI JMP L3 EXIT:THE NUMBER IS: 2 ADDR
5、ESS OFFSET:3 ADDRESS OFFSET:5(2)寄存器间接寻址:CX:循环计数器和偏移量计数器。 MOV CX,0 LEA BX,H CMP CX,N MOV AL,BX MOV ASI,CL INC CX END START 3 (3) 基址变址寻址: 寄存器分配和流程图与(2)基本类似。 补充: DI还作为以H为首址各变量的偏移量。 BX只存储H的地址。 MOV AL,BX+DI2. 在以TAB为首地址的字存储区中存放有N个无符号数,试统计低3位全为1 的数的个数(个数设为9),并显示。作为TAB为首地址的存储区的地址指针。CL:测试低3位全为1的计数器。DX:临时存储数据
6、。 TAB DW 1,0,7,15 N=($-TAB)/2 A DB THE TOTAL IS: MOV CL,0 CMP BX,(N-1)*2 JA PRINT MOV DX,7 AND DX,TABBX CMP DX,111B JE L3 ADD BX,2 INC CL ADD CL,30H MOV DL,CL23. 键盘接受一串字符到BUF为首地址的字节单元中,要求用下列方法分别编程,将它们以相反的次序显示在屏幕的下一行中:(1).按地址从尾向前依次显示。 寄存器分配:BX:作为BUF+2为首地址的存储区的地址指针。 BUF DB 100 DB ? LEA DX,BUF MOV AH,10 MOV BL,BUF+1 MOV BH,0 DEC BX MOV DL,BUF+2BX CMP BX,0 JGE L1dadasd(输入) dsadad(结果)(2).利用堆栈反向显示。作为BUF+2为首地址的存储区的地址指针,也存储循环最大次数。循环计数器及暂存数据。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1