一、写指令: 1.将DI寄存器的内容减1 sub ax,1 2.用一条指令使程序从中断服务程序返回 3.从80H端口读入 程序题作业答案:一、写指令:1.将DI寄存器的内容减1 DEC DI或 SUB DI,12.用一条指令使程序从中断服务程序返回 IRET3.从80H端口读入数据送入AL IN AL,80H4.将3000H及。
DSEG 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL、DL中,要求写出上机调试可通过的程序 DSEG SEGMENT TEMP DB 4DUP?DSEG ENDS…START:MOV CL。
可将AX寄存器中D0,D4,D9,D12位求反,其余位不变的指令是( )。 D.XOR AX,1211H 1211H写成二进制是0001 0010 0001 0001 从右往左是从0位到11位,刚好是第0,4,9,12位 XOR表示异或,即两个不同的数异或是1,两个相同的数异或是0。.
编程将寄存器AX中的二进制数转换为ASCII码 结果放在ASCBUF开始的连续5个内存单元中 ;你们老师题目出得不太准确。按所给程序,严格说来,应该是把(ax)中的数据,转换为10进制数,各位上的数字以ASCII码值放在ASCBUF中。dseg segmentascbuf db 5 dup(0)dseg endsassume cs:cseg,ds:dsegcseg segmentstart:mov ax,dsegmov ds,axmov ax,0abcdh;这个数据你自己定call bintoascmov ah,4chint 21hBINTOASC PROC NEARMOV CX,10LEA SI,ASCBUF+4BTOA1:CMP AX,10JB BTOA2XOR DX,DXDIV CXOR DL,30HMOV[SI],DLDEC SIJMP BTOA1BTOA2:OR AL,30HMOV[SI],ALRETBINTOASC ENDPcseg endsend start看来你还没掌握汇编程序的基本结构啊,努力吧,少年。
将寄存器AX的内容求反的操作 你的这些问题,都涉及到基本X86汇编中寻址方式的问题.为方便起见,后面用PA表示物理地址.题目中逗号右边,就是源操作数,用SRC表示.第一小题:SRC是直接寻址方式,PA=ES X 16+1000H=30000H+1000H=31000H,从这个内存地址取两个字节,低前高后组合,送到AX,则AX内容就是9ABCH.第二小题:SRC是寄存器间接寻址方式,PA=DS X 16+(BX)=20000H+1000H=21000H,同样从中取两个字节,则AX内容就是1234H第三小题,SRC是基址变址寻址方式,PA=SS X 16+(BP)+(DI)=40000H+1000H+0002H=41002H,同样从中取两个字节,则AX中应该是789AH第四小题,SRC同第三小题,PA=DS X 16+(BX)+(SI)=20000H+1000H+0001H=21001H,从中取两个字节,注意这里跨了题目给定的两个不同的内存字单元,所以AX中应该是7812H.连接中的两个题,更简单第一大题:注意堆栈的先进后出规则POP DXPOP CXPOP BXPOP AX第二大题:注意分辨寻址方式特征SRC 立即寻址 DST 寄存器寻址立即寻址 寄存器相对寻址寄存器相对寻址 寄存器寻址寄存器寻址 基址变址寻址直接寻址(若BUF是变量,若是常数,为立即寻址)寄存器寻址寄存器间接寻址 寄存器寻址寄存器寻址 基址变址相对寻址
由寄存器AX,BX组成一个32位带符号数(AX中存放高16位),试求这个数的负数。 指令是NEG的应用,高16位直接取反,低16位取补。
用汇编语言编写一个程序,统计寄存器AX中二进制“1”的个数,结果一位十六进制数的形式显示 ;程序已实现,主要考虑的是抄怎样获取1的个数具体以怎样的形式显示没有太在意个数存在BL中,若想百以各种形式显示,调用不同的度子函数即可(现在各种进制转换的汇编代码网上一堆知)code segmentassume cs:codestart:mov ax,1234mov bl,0;统计1的个数mov cx,16;循环次数loop1:test ax,8000h;不断的左移,与道8000h比较获取1的个数jnz loop2inc blshl ax,1loop2:loop loop1输出1的个数mov dl,bladd dl,30hmov ah,02hint 21hmov ah,4chint 21hcode endsend start