从STDIN读取并使用nasm汇编打印到STDOUT?

时间:2016-10-24 23:35:10

标签: gcc assembly nasm

正如标题所示,我似乎很难将下面的代码转换成完全相同的东西,即从stdin和stdout读取。我的教授希望我们停止使用int 80h并切换到使用gcc。使用下面的代码读取输入时没有问题,但切换到gcc是我开始获取分段核心转储错误的地方。

.post(function(req, res) {
var promise =  new Promise(function(resolve, reject){

  var queue = req.body.queue;
  if ( typeof(queue) == 'undefined' || queue.length == 0 ) return reject("No Queue Specified");

  // need to add VALID JSON CHECK
  var message = req.body.message;
  if ( typeof(message) == 'undefined' || message.length == 0 ) reject("No Message Specified");

  // select the Awknoledgement of the queue.
  var noAck = req.body.ack || true;

  // select the durabiltiy of the queue. Custing issues in the below if different hten when created.
  var durableOpt = req.body.durable || false;

  var assertOpt = {durable: durableOpt};

  var sendOptions = {
    noAck: noAck,
    contentType: 'application/json' };

  amqp.connect( process.env.QUEUE_HOST , function(err, conn) {

    if (err) return reject(err);

    conn.createChannel(function(err, ch) {
      if (err) return reject(err);

      var check = new Promise(function(resolve, reject){
        ch.checkQueue(queue, function(err,ok){
          if (err != null){
            return reject(err);
          } else {
            return resolve(true);
          }
        })
      })

      var assert = new Promise(function(resolve, reject){
        ch.assertQueue( queue , assertOpt, function(err,ok){
          if (err != null){
            return reject(err);
          } else {
            return resolve(true);
          }
        })
      })

      Promise.all( [ check , assert ] ).then(function( values ){

        for (var i = 0; i < values.length; i++) {
          if (values[i] !== true){
            reject(values[i])
          }
        }

        if( ch.sendToQueue(queue, new Buffer( JSON.stringify( message ) ) , sendOptions) == true){
          return resolve('message added');
        }

      }) // end Promise.all
    }) // end conn.createChannel
  }) // end amqp.connect
}) // end of promise.

promise.then(
function(response){
  res.status(200).json(response);
},
function( error ){
  res.status(400).json(error);
})
})

我尝试转换上述内容以执行相同的任务

section .bss
   buf      resb 1                  ; 1000-byte buffer (in data section)

section .text
    global _start
_start:
loop1:   mov  edx, 1             ; max length
         mov  ecx, buf           ; buffer
         mov  ebx, 0             ; stdin
         mov  eax, 3             ; sys_read
         int  80h

         cmp  eax, 0             ; end loop if read <= 0
         jle  lpend1

         mov  edx, eax           ; length
         mov  ecx, buf           ; buffer
         mov  ebx, 1             ; stdout
         mov  eax, 4             ; sys_write
         int  80h

         jmp  loop1              ; go back for more
lpend1: 
         mov    eax, 1
         mov    ebx, 0
         int    80h

0 个答案:

没有答案