ZKX's LAB

汇编八位数送到寄存器 几道简单的汇编语言题求答案!我追加高的分数

2020-07-26知识17

用汇编语言编程,将8位寄存器(如AL)中的数值以十进制的形式显示在计 code segmentassume cs:codeorg 100hstart:push cspop dspush cspop esmov al,99call dispnummov ah,4chint 21hdispnum proc nearpush axpush bxpush cxpush dxpush sipush dipush bppushf将要显示的数据放入AL中mov ah,0mov cl,10div clmov byte ptr[@y+4],ah;保存个位add byte ptr[@y+4],30h;个位转ASC2mov ah,0div clmov byte ptr[@y+3],ah;保存十位add byte ptr[@y+3],30h;十位转ASC2mov ah,0mov byte ptr[@y+2],al;保存百位add byte ptr[@y+2],30h;百位转ASC2mov ah,9lea dx,@yint 21hpopfpop bppop dipop sipop dxpop cxpop bxpop axrety db 10,13,0,0,0,'$'dispnum endpcode endsend start汇编SI寄存器的低四位和高四位分别指什么 那高四位就是1H,二进制0001;第四位就是4H,二进制0100几道简单的汇编语言题求答案。我追加高的分数 1.外部RAM1000H单元内容送寄存器R2中MOV DPTR,#1000HMOVX A,@DPTRMOV R2,A2.内部RAM20H单元内容送外部RAM 1000H单元MOV A,20HMOV DPTR,#1000HMOVX@DPTR,A3外部RAM20H单元内容送外部RAM1000H单元MOV DPTR,#20HMOVX A,@DPTRMOV DPTR,#1000HMOVX@DPTR,A4.ROM 2000H单元内容送内部RAM 30H单元MOV DPTR,#2000HMOVC A,@DPTRMOV 30H,A5.ROM 2000H单元内容送外部RAM20H单元MOV DPTR,#2000HMOVC A,@DPTRMOV DPTR,#30HMOVX@DPTR,A6ROM 2000H单元内容送外部RAM1000H单元MOV DPTR,#2000HMOVC A,@DPTRMOV DPTR,#1000HMOVX@DPTR,A7.将外部RAM 1000H单元中的低4位清0,其余位不变,结果存回原处MOV DPTR,#1000HMOVX A,@DPTRANL A,#0F0HMOVX@DPTR,A8.将内部RAM 50H单元中高3位置1,其余位不变,结果存回原处ORL 50H,#0E0H9.将内部RAM 20H单元的高4位置1,低4位清0,结果存回原处ORL 20H,#0F0HANL 20H,#0F0H10.将DPTR的中间8位取反,其余位不变,结果存回原处A(此题我理解为:将DPTR中的16位数的中间8位取反,其余位不变,结果存回原处,即dptr中)MOV A,DPHXRL A,#0FHMOV DPH,AMOV A,DPLXRL A,#0F0HMOV DPL,A汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数 data segmentdata endsstack segmentdb 256 dup?stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,stackmov ss,axmov al,0c5hcall disp_almov al,065hcall disp_almov ah,04chint 21hdisp_al子程序将寄存器AL中的数值以十六进制显示出来disp_al:mov dh,almov bx,2;bx用于循环,一个字节最多可以显示成两个字符,所以循环次数是2次mov cl,4;首先显示高4位,在下次循环进再显示低4位shr al,clagain:and al,0fhcmp al,9ja hexadd al,'0';如果小于9,加上字符'0'将数字转换字符jmp disphex:sub al,10;如果大于9,先减去10,再加上字符'A',就可以将数字转换成相应的'A'~'F'add al,'A'disp:;利用中断显示字符mov dl,almov ah,02hint 21hmov al,dhdec bxtest bx,bxjnz againretcode endsend start汇编语言问题 16位的寄存器 的16位是指的地址总线吗 呵呵 俺来帮你分析吧1 16位的寄存器的含义:该寄存器能存储16位的数据例如 累加器AX就是一个16位的数据寄存器 它是由2个8位寄存器组成的高8位寄存器AH和低8位的寄存器AL8086CPU可以一次传送一个16位的数据给一个16位的寄存器说明8086CPU的数据线为16位的不是指地址线 实际为了是8086CPU能访问更多的存储器 其地址线为20条可以访问存储器单元个数为2^20=1M2 内存的每个单元不是应该是8bit 怎么又 16bit?8086CPU的数据线为16位 最多可以一次传送16位数据 也可以一次只传送8位数据即8086CPU可以按一个字(16位)来使用存储器也可以按一个字节(8位)来使用存储器存储器的字单元为16bit 存储器的字节单元为8bit 二者并不矛盾哈哈 满意就选满意回答吧汇编语言如何知道寄存器内的值按照8位16位32位表示,并在做算术运算判是否断溢或表记进退位? 1、立即数可以直接赋值到不同长度的寄存器中,这个赋值过程由编译器处理。2、8位数不能和16位数直接相加,需要在相加之前将8位转(cbw)为16位,再相加。特别是有负数参与运算时。这些相加过程由程序员所编制的指令控制,编译器只负责翻译!

#汇编语言#指令寄存器#地址总线#数据寄存器#赋值

随机阅读

qrcode
访问手机版