用查询方式将输入设备的一个数据读入CPU的BL中,程序段如下所示,请完成该段8086汇编程序,将(1)~(5)的内容填入相应的位置。START: MOV DX, (1)NEXT1: IN AL,DXNEXT2: AND AL, (2)JZ (3)MOV DX, (4)IN AL,DXNEXT3: MOV (5),ALRET

题目

用查询方式将输入设备的一个数据读入CPU的BL中,程序段如下所示,请完成该段8086汇编程序,将(1)~(5)的内容填入相应的位置。

START: MOV DX, (1)

NEXT1: IN AL,DX

NEXT2: AND AL, (2)

JZ (3)

MOV DX, (4)

IN AL,DX

NEXT3: MOV (5),AL

RET


相似考题
更多“用查询方式将输入设备的一个数据读入CPU的BL中,程序段如下所示,请完成该段8086汇编程序,将(1)~(5 ”相关问题
  • 第1题:

    1、设有一台输入设备,其数据端口为80H,状态端口为81H。请分析如下问题:(说出方法,写出指令) 1. 当其状态字的D0位是1的时候表示输入数据准备好。请写出如何读取状态字? 2. 如何判断读取的状态字表示的是准备好还是未准备好? 3. 如使用用查询方式进行数据输入的程序段,需要如何操作?程序应如何设计?


    正确

  • 第2题:

    8086CPU允许汇编语言程序的代码段和数据段重叠。()


    一、数据传送指令1.通用数据传送指令MOV(Move)传送PUSH(Push onto the stack)进栈POP(Pop from the stack)出栈XCHG(Exchange)交换.MOV 指令格式为: MOV DST,SRC执行的操作:(DST).PUSH 进栈指令格式为:PUSH SRC执行的操作:(SP)((SP)+1,(SP)).POP 出栈指令格式为:POP DST执行的操作:(DST)(SP).XCHG 交换指令格式为:XCHG OPR1,OPR2执行的操作:(OPR1)(OPR2)2.累加器专用传送指令IN(Input) 输入OUT(Output) 输出XLAT(Translate) 换码这组指令只限于使用累加器AX 或AL 传送信息..IN 输入指令长格式为: IN AL,PORT(字节)IN AX,PORT(字)执行的操作: (AL)(AX)短格式为: IN AL,DX(字节)IN AX,DX(字)执行的操作: ALAX.OUT 输出指令长格式为: OUT PORT,AL(字节)OUT PORT,AX(字)执行的操作: (PORT)(PORT+1,PORT)短格式为: OUT DX,AL(字节)OUT DX,AX(字)执行的操作: ((DX))((DX)+1,(DX))在IBM-PC 机里,外部设备最多可有65536个I/O 端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX 寄存器中(端口号可以从0000到0FFFFH),然后再用IN 或OUT 指令来传送信息..XLAT 换码指令格式为: XLAT OPR或: XLAT执行的操作:(AL)3.有效地址送寄存器指令LEA(Load effective address)有效地址送寄存器LDS(Load DS with Pointer)指针送寄存器和DSLES(Load ES with Pointer)指针送寄存器和ES.LEA 有效地址送寄存器格式为: LEA REG,SRC执行的操作:(REG)指令把源操作数的有效地址送到指定的寄存器中..LDS 指针送寄存器和DS 指令格式为: LDS REG,SRC执行的操作:(REG)(DS)把源操作数指定的4个相继字节送到由指令指定的寄存器及DS 寄存器中.该指令常指定SI 寄存器..LES 指针送寄存器和ES 指令格式为: LES REG,SRC执行的操作: (REG)(ES)把源操作数指定的4个相继字节送到由指令指定的寄存器及ES 寄存器中.该指令常指定DI 寄存器.4.标志寄存器传送指令LAHF(Load AH with flags)标志送AHSAHF(store AH into flags)AH 送标志寄存器PUSHF(push the flags) 标志进栈POPF(pop the flags) 标志出栈.LAHF 标志送AH格式为: LAHF执行的操作:(AH).SAHF AH 送标志寄存器格式为: SAHF执行的操作:(PWS 的低字节).PUSHF 标志进栈格式为: PUSHF执行的操作:(SP)((SP)+1,(SP)).POPF 标志出栈格式为: POPF执行的操作:(PWS)(SP)二、算术指令1.加法指令ADD(add)加法ADC(add with carry)带进位加法INC(increment)加1.ADD 加法指令格式: ADD DST,SRC执行的操作:(DST).ADC 带进位加法指令格式: ADC DST,SRC执行的操作:(DST).ADD 加1指令格式: INC OPR执行的操作:(OPR)2.减法指令SUB(subtract)减法SBB(subtract with borrow)带借位减法DEC(Decrement)减1NEG(Negate)求补CMP(Compare)比较.SUB 减法指令格式: SUB DST,SRC执行的操作:(DST).SBB 带借位减法指令格式: SBB DST,SRC执行的操作:(DST).DEC 减1指令格式: DEC OPR执行的操作:(OPR).NEG 求补指令格式: NEG OPR执行的操作:(OPR).CMP 比较指令格式: CMP OPR1,OPR2执行的操作:(OPR1)-(OPR2)该指令与SUB 指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半球.3.乘法指令MUL(Unsigned Multiple)无符号数乘法IMUL(Signed Multiple)带符号数乘法.MUL 无符号数乘法指令格式: MUL SRC执行的操作:字节操作数:(AX)字操作数:(DX,AX).IMUL 带符号数乘法指令格式: IMUL SRC执行的操作:与MUL 相同,但必须是带符号数,而MUL 是无符号数.4.除法指令DIV(Unsigned divide)无符号数除法IDIV(Signed divide)带符号数除法CBW(Convert byte to word)字节转换为字CWD(Contert word to double word)字转换为双字.DIV 无符号数除法指令格式: DIV SRC执行的操作:字节操作:(AL)(AH)字操作: (AX)(AX).IDIV 带符号数除法指令格式: DIV SRC执行的操作:与DIV 相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号与被除数的符号相同..CBW 字节转换为字指令格式: CBW执行的操作:AL 的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;如(AL)的最高有效位为1,则(AH)=0FFH.CWD 字转换为双字指令格式: CWD执行的操作:AX 的内容符号扩展到DX.即如(AX) 的最高有效位为0, 则(DX)=0;否则(DX)=0FFFFH.这两条指令都不影响条件码.三、逻辑指令1.逻辑运算指令AND(and) 逻辑与OR(or) 逻辑或NOT(not) 逻辑非XOR(exclusive or)异或TEST(test) 测试.AND 逻辑与指令格式: AND DST,SRC执行的操作:(DST).OR 逻辑或指令格式: OR DST,SRC执行的操作:(DST).NOT 逻辑非指令格式: NOT OPR执行的操作:(OPR).XOR 异或指令格式: XOR DST,SRC执行的操作:(DST).TEST 测试指令格式: TEST OPR1,OPR2执行的操作:(DST)^(SRC)两个操作数相与的结果不保存,只根据其特征置条件码2.移位指令SHL(shift logical left) 逻辑左移SAL(shift arithmetic left) 算术左移SHR(shift logical right) 逻辑右移SAR(shift arithmetic right) 算术右移ROL(Rotate left) 循环左移ROR(Rotate right) 循环右移RCL(Rotate left through carry) 带进位循环左移RCR(Rotate right through carry) 带进位循环右移格式: SHL OPR,CNT(其余的类似)其中OPR 可以是除立即数以外的任何寻址方式.移位次数由CNT 决定,CNT 可以是1或CL.循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2除以2操作.其中算术移位指令适用于带符号数运算,SAL 用来乘2,SAR 用来除以2;而逻辑移位指令则用来无符号数运算,SHL 用来乘2,SHR 用来除以2.四、串处理指令1.与REP 相配合工作的MOVS,STOS 和LODS 指令.REP 重复串操作直到(CX)=0为上格式: REP string primitive其中String Primitive 可为MOVS,LODS 或STOS 指令执行的操作:1)如(CX)=0则退出REP,否则往下执行.2)(CX)3)执行其中的串操作4)重复1)~3).MOVS 串传送指令格式:可有三种MOVS DST,SRCMOVSB(字节)MOVSW(字)其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:MOVS ES:BYTE PTR[DI],DS:[SI]执行的操作:1)((DI))2)字节操作:(SI)当方向标志DF=0时用+,当方向标志DF=1时用-3)字操作:(SI)当方向标志DF=0时用+,当方向标志DF=1时用-该指令不影响条件码..CLD(Clear direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量;.STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量..STOS 存入串指令格式: STOS DSTSTOSB(字节)STOSW(字)执行的操作:字节操作:((DI))字操作: ((DI))该指令把AL 或AX 的内容存入由(DI)指定的附加段的某单元中,并根据DF 的值及数据类型修改DI 的内容,当它与REP 联用时,可把AL 或AX 的内容存入一个长度为(CX)的缓冲区中..LODS 从串取指令格式: LODS SRCLODSBLODSW执行的操作:字节操作:(AL)字操作: (AX)该指令把由(SI)指定的数据段中某单元的内容送到AL 或AX 中,并根据方向标志及数据类型修改SI 的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.一般说来,该指令不和REP 联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令.2.与REPE/REPZ 和REPNZ/REPNE 联合工作的CMPS 和SCAS 指令.REPE/REPZ 当相等/为零时重复串操作格式: REPE(或REPZ) String Primitive其中String Primitive 可为CMPS 或SCAS 指令.执行的操作:1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行2)(CX)3)执行其后的串指令4)重复1)~3).REPNE/REPNZ 当不相等/不为零时重复串操作格式: REPNE(或REPNZ) String Primitive其中String Primitive 可为CMPS 或SCAS 指令执行的操作:除退出条件(CX=0)或ZF=1外,其他操作与REPE 完全相同..CMPS 串比较指令格式: CMP SRC,DSTCMPSBCMPSW执行的操作:1)((SI))-((DI))2)字节操作:(SI)字操作: (SI)指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS 指令的规定相同..SCAS 串扫描指令格式: SCAS DSTSCASBSCASW执行的操作:字节操作:(AL)-((DI)),(DI)字操作: (AL)-((DI)),(DI)该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码.指令的其他特性和MOVS 的规定相同.五、控制转移指令1.无条件转移指令.JMP(jmp) 跳转指令1)段内直接短转移格式:JMP SHORT OPR执行的操作:(IP)2)段内直接近转移格式:JMP NEAR PTR OPR执行的操作:(IP)3)段内间接转移格式:JMP WORD PTR OPR执行的操作:(IP)4)段间直接(远)转移格式:JMP FAR PTR OPR执行的操作:(IP)偏移地址(CS)5)段间间接转移格式:JMP DWORD PTR OPR执行的操作:(IP)(CS)2.条件转移指令1)根据单个条件标志的设置情况转移.JZ(或JE)(Jump if zero,or equal) 结果为零(或相等)则转移格式:JE(或JZ) OPR测试条件:ZF=1.JNZ(或JNE)(Jump if not zero,or not equal) 结果不为零(或不相等)则转移格式:JNZ(或JNE) OPR测试条件:ZF=0<br /

  • 第3题:

    8086CPU支持将数据直接送入段寄存器的操作,如:mov ds,1000H。


    AL/AX

  • 第4题:

    5、下列为将两位压缩BCD码转换为两个ASCII字符的程序段,将合适的指令填入空白处,形成正确的程序段。 BCDBUF DB 46H ASCBUF DB ?,? MOV AL, ‍____(1)_____ MOV BL, AL MOV CL, 4 (2) ‍BL, CL ADD BL,‍___(3)____ MOV ASCBUF,BL (4) _____(5)____________ MOV ASCBUF+1,AL


    1) 将下列十进制数分别转化为二进制数、十六进制数和压缩BCD码。 (1)15.32 (2)325.16 (3)68.31 (4)214.126 【解答】 : (1)15.32 = 1111.0101B = F.5H=00010101.00110010BCD。 (2)325.16 = 10000101.0001B = 85.1H= 001100100101.00010110BCD。 (3)68.31 = 1000100.0100B = 64.4H= 01101000.00110001BCD。 (4)214.126 = 11010110.0010B = D6.2H= 001000010100.000100100110BCD。 2) 写出下列带符号十进制数的原码、反码、补码表示(采用8位二进制数)。 (1)+38 (2)+82 (3)-57 (4)-115 【解答】 (1) X = +38 ,[X] 补 = 00100110B (2) X = +82 ,[X] 补 = 01010010B (3) X = -57 ,[X] 补 = 11000111B (4) X =-115,[X] 补 = 10001101B 3) 写出下列二进制数的补码表示。 (1)+1010100 (2) + 1101101 (3) - 0110010 (4) - 1001110 【解答】 (1)X = +1010100,[X] 补 = 01010100B (2)X = + 1101101 ,[X] 补 = 01101101B (3)X = - 0110010 ,[X] 补 = 11001110B (4)X = - 1001110 ,[X] 补 = 10110010B 4) 已知下列补码求出其真值。 (1)87H (2)3DH (3)0B62H (4)3CF2H 【解答】 (1) [X] 补 = 87H = 10000111B,符号位为1,X是负数,[ X] 原 =11111001B ,X =-79H (2) [X] 补 = 3DH = 00111101B,符号位为0,X是正数, X = 3DH (3) [X] 补 = 0B62H =0000101101100010B,符号位为0,X是正数, X = +B62H (4) [X] 补 = 3CF2H = 0011110011110010B,符号位为0,X是正数, X =3CF2H 5) 按照字符所对应的ASCII码表示,查表写出下列字符的ASCII码。 A 、g 、W、*、ESC、LF、CR 、% 【解答】 A的ASCII码为41H;G的ASCII码为47H;W的ASCII码为57H;*的ASCII码为2AH;ESC的ASCII码为1BH;LF的ASCII码为0AH;CR的ASCII码为DH;%的ASCII码为25H。 6) 把下列英文单词转换成ASCII编码的字符串。 (1)How (2)Great (3)Water (4)Good 【解答】 (1)How的ASCII码为486F77H; (2)Great的ASCII码为4772656174H; (3)Water的ASCII码为5761746572H; (4)Good的ASCII码为476F6F64H。

  • 第5题:

    1、设8255A接到系统中,端口A、B、C及控制口地址分别为220H-223H,工作在方式0,将端口B的数据输入后,从端口C输出,同时,将其取反后从端口A输出。请写出相应初始化程序段和输入输出程序段。


    答:端口 A 包含一个 8 位的数据输出锁存器/缓冲器,一个 8 位的数据输入锁存器,因此 A口作输入或输出时数据均能锁存。端口 B 包含一个 8 位的数据输入/输出锁存器/缓冲器,一个 8 位的数据输入缓冲器。端口 C 包含一个 8 位的数据输出锁存器/缓冲器,一个 8 位的数据输入缓冲器,无输入锁存功能,当它被分成两个 4 位端口时,每个端口有一个 4 位的输出锁存器。端口 A 和端口 C 的上半部分 (PC7~PC4) 由 A 组控制逻辑管理。端口 B 和端口 C 的下半部分(PC3~PCO) 由 B 组控制逻辑管理。