用汇编语言编写一个程序,把存放在BX寄存器内的值(二进制数)用十六位二进制数的形式在屏幕上显示出来

如题所述

assume cs:code

code segment

start:

mov bx,1234h;number to show

mov cx,16;loop time

push bx

s:

mov dx,bx

and dx,8000h

cmp dx,0

je put0

mov ah,02h

mov dl,31h

int 21h;show '1'

jmp onebit

put0:

mov ah,02h

mov dl,30h

int 21h;show '0'

onebit:

shl bx,1;ready for next bit

loop s

pop bx

mov ax,4c00h

int 21h

code ends

end start     

有图有真相:

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-18
很简单的题目,用不着弄的那么复杂。

七条指令就够用了:

ASSUME CS:CODE
CODE SEGMENT
START:
MOV BX, 1234H ;预置数字
;------------------------
MOV AH, 2
MOV CX, 16
O_BX: MOV DL, '0'
ADD BX, BX
ADC DL, 0
INT 21H
LOOP O_BX
;------------------------
MOV AX, 4C00H ;退出
INT 21H
CODE ENDS
END START

...把存放在BX寄存器内的值(二进制数)用十六进制数的形式在屏幕上...
MOV BX,1111110111100001B MOV CH,4 ;循环四次 LOP: MOV CL,4 ROL BX,CL ;每次循环环左移四位 MOV DX,BX AND DL,0FH ;每次取低四位,来表示一个十六进数 ADD DL,30H ;转化成为ASSIC码 CMP DL,3AH ;判断DL是否大于10的ASSIC码(A+30H)JB NEXT ADD DL,7 ;大于10...

汇编小问题 一个程序要求编制一个程序把BX寄存器内的二进制数用十六进制...
1. EXE程序加载时,DS是指向PSP前缀的。2. PSP前缀总长100H个字节,它最前面偏移地址为0处的第一条代码正是 INT 20H 框架是这样的:MAIN PROC FAR ;这里必须将过程属性定义成远调用,是为了保证最后的RET是远返回 PUSH DS ; 这里入栈的DS,就是PSP的段地址 SUB AX, AX ;PUSH ...

用汇编语言(MASM)编程将寄存器BX中的16位二进制内容颠倒过来
ASSUME CS:CODES START:MOV BX,1234H MOV AX,BX MOV CX,16 LOOP2:SHR AX,1;右移一位,D0到CF RCL BX,1;左移一位,CF到D0 LOOP LOOP2;循环L00P2,直到CX==0成立 MOV AH,4CH ;带返回码结束功能 INT 21H ;返回系统 CODES ENDS END START ...

汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数
;disp_al子程序将寄存器AL中的数值以十六进制显示出来disp_al: mov dh, al mov bx, 2 ;bx用于循环,一个字节最多可以显示成两个字符,所以循环次数是2次 mov cl, 4 ;首先显示高4位,在下次循环进再显示低4位 shr al, clagain: and al, 0fh cmp al, 9 ja hex add al, '0' ;如果小于9,加上字符...

用汇编语言编写一个程序,统计寄存器AX中二进制“1”的个数,结果一位...
;个数存在BL中,若想以各种形式显示,调用不同的子函数即可(现在各种进制转换的汇编代码网上一堆)code segment assume cs:code start:mov ax,1234 mov bl,0;统计1的个数 mov cx,16;循环次数 loop1:test ax,8000h;不断的左移,与8000h比较获取1的个数 jnz loop2 inc bl shl ax,1 loop2:l...

汇编语言实验 分支程序设计
LOOP1: RW STR4, 9 ;输出Please input your telephone number:RWBUF1,10 ;输入号码 RWSTR1,9 ;回车换行 RW STR4, 9 ;输出Please input your telephone number again:RWBUF2,10 ;输入号码 RWSTR1,9 ;回车换行 MOVCL,BUF1[1]CMPCL,BUF2[1] ;比较输入...

试编写一段程序将BX寄存器中的二进制数转变为八进制数,并在屏幕上显示...
MOV CL,1 ROL BX,CL PUSH BX AND BX,1 CALL DISP POP BX MOV DX,5 AG:MOV CL,3 ROL BX,CL PUSH BX AND BX,07 CALL DISP POP BX DEC DX JNZ AG INT 3 DISP:PUSH BX PUSH CX PUSH DX MOV AL,BL ADD AL,'0'MOV AH,2 INT 21H POP DX POP CX POP BX RET ...

汇编:将AX寄存器中16位二进制数分成四组,每组四位,然后把这四组数分别...
;1.把ax寄存器内容分4组每组4位,然后把这4组数分别放在AL,BL,CL,DL中assume cs:code code segment start: mov ax,1234h mov bx,ax mov cx,ax mov dx,ax and al,0fh ;al中是4 mov cl,4 shr bl,cl ;bl中是3 and ch,0fh ;ch中是2,先存在这,最后再给cl mov cl,4 shr dh,cl mov dl,dh ...

汇编语言中,CMP BX,'$',与cmp byte ptr[bx],'$'
前者是将bx寄存器的值与$的ASCii码值(24H)进行比较,是两个16位二进制数的比较。后者是将bx为偏移地址的内存单元中的字节数与24H进行比较,是两个字节数的比较。

【高分】帮忙用汇编语言做一个程序:学生成绩统计
dec cx ;实际输入的数字位数减1,准备把输入的这一串数字转换成二进制数 jcxz @@One_Digit ;若输入的数字只有一位,转去直接保存这个二进制数 mov bx,10@@Mul_Ten: lodsb cbw add ax,bp mul bx mov bp,ax loop @@Mul_Ten@@One_Digit: lodsb cbw add ax,bp@@Save_Ret: pop di cmp @@Type_Data,...

相似回答