ZKX's LAB

汇编输出寄存器ax中的数 汇编语言-简单的比较无符号数

2020-07-21知识6

我的一个汇编程序:把AX寄存器里的16位数分四次输出来 却是输出了好奇怪的字符 DATA MOV DS,AX LEA SI,D1 MOV CX,4 L1:MOV BX,4 L2:RCL AX,1 PUSH AX ADC DL,30H MOV AH,02H INT 21H POP AX DEC BX CMP BX,0 JNZ L2 MOV DX,SI MOV AH,09H INT 21H LOOP 。汇编寄存器中 ax 和[ax] 什么区别? 操作ax的时候就是直接用ax中的值,[ax]是将ax中的值当作一个地址,然后将这个地址对应该内存中的值来操作。比如mov bx,ax是将ax中的值给bx,mov bx,[ax],是将内存中ds段ax这个偏移地址中的那个值给bx,不知道我说的你能不能明白,用汇编语言编写一个程序,统计寄存器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汇编编程:在AX寄存器中存放了一个二进制数,通过编程,将其数值在屏幕上进行显示 不要太复杂,刚学 告诉你一个思路利用循环左移指令,可以把AX的数字从高位开始左移到 标志位然后判断如果是1输出“1”否则输出“0”循环16次,可以显示完成可以用CX计数还要调用字符显示中断汇编语言-简单的比较无符号数 很简单的比较啊比较ax和bx如果是ax>;bx 就用cx与ax和bx比较如果cx>;ax就输出ax;如果cxax的情况也可以直接排序 按照ax>;bx>;cx排序 然后输出bx 我记得X86好像有交换数据的指令,就不需要额外的存储单元了汇编语言编写一个程序,统计AX中0 的个数,结果放在CL寄存器中,假设AX=OFF37H,CL=13 这样:mov ds:[0],0mov ax,0ff37h;假设用这个数字mov dx,0001hmov cx,0FHs:mov bx,dx;bx从01h开始add bx,ax;与运算,cmp bx,dx;如果相等位是1,否则是0jne z;如果不相等,为0则跳,add dx,dxloop smov cl,ds:[0]mov ax,4c00hint 21hz:Inc ds:[0]sub cx,1add dx,dxjmp s

#通用寄存器#汇编指令

随机阅读

qrcode
访问手机版